Skip to main content

List of Common mistakes in Ruby

Always use spaces around operators, after commas, colons and semicolons, around { and before }. White space might be (mostly) irrelevant to the Ruby interpreter, but its proper use is the key to writing easily readable code. Also it makes the design more readable and code much cleaner.

product = 1 * 2
array = [1, 2, 3, 4, 5] { |a| a + 2 }

There should be no spaces after (, [ or before ], ) these brackets.

['ankur', 'vyas']
sum(a, b)

Also don't use spaces in while providing the range.

Use 5..9 over 5 .. 9
Use 'a'..'z' over 'a' .. 'z'

When using switch case statements use the following indentation.

  when input = '+'
    puts 'The operation is addition'
  when '-'
    puts 'The operation is subtraction'
  when '*'
    puts 'The operation is multiplication'
    puts 'The operation is division'

Use following indentation if the parameters exceeds to more than one line.

def send_mail(source)
  Mailer.deliver( to: '',
                  from: '',
                  subject: 'Message subject',
                  body: source.text)

Use splat for better assignments.

element_1, *other_elements = ['a', 'n', 'k', 'u', 'r']

If only 2 conditions are present use the ternary operators.

var_1 = condition ? assignment_1 : assignment_2

If you are setting a variable using the if condition the use following syntax.

variable_result = if condition_1
                  else_if condition_2

Avoid return statements at the end of the line. In ruby the last line of the method is returned.

Use snake case for all the ruby variables.

variable_1, some_variable

Use camel case for class names.

ClassOne, ClassTwo

Use screaming snake case for the constants' names.


Use %w for the string arrays and %i for the symbol arrays.

STATUS_MAP = %w(open closed draft paid)
SYMBOL_MAP = %i(symbol1 symbol2 symbol3)

Use interpolation over concatenation.

Use "#{string_1} < #{string2} >" over string_1 + '<' + string2 + '>'

Assign single quotes to the string which does not have interpolation.

Use 'string 1' over "string 1"

Do not use the word partial when you don't want to pass some variables in it.

Use render 'partial_1' over render partial: 'partial_1'



Popular posts from this blog

Rails: Grouping the records by group_by method

Many times we come across such situations where we need to group records, like when we want to display grouped messages, email, alerts .etc based on date or time. Here is the simple code which provides a significant use of group_by method.
Controller Part

classMessagesController < ApplicationController
@message = Message.all

#Retrives all messages and divides into two groups todays messages and other messages
@grouped_messages = @message.group_by{ |t| t.created_at.to_date == }

5 Useful Android Apps

There are many apps available for Android but these are some useful apps which I use regularly.
1. Money View: Financial Planning
Description: With the Free Money View app, you get a real-time visibility into your entire Personal Finances. It works by itself without any manual data entry - their daily expense manager app organizes our financial summary by analyzing SMS sent by our bank and billers to our phone. The app auto-tracks your expense, bills and account balances across all our financial accounts to help us stay on top of our money. The app is highly secure as it never reads any sensitive data - no full bank account numbers, no OTP, and no Netbanking login/password.
As it anaylzes the money transactions via the SMS in our phone it is highly useful app for tracking our expenses, so we can know our money is going in which direction so we can control it.

More information:

2. To-do List | Task List

OOP Polymorphism

Definition: "Poly" stands for "many" and "morph" stands for "forms". Generally, polymorphism means one name different uses. Technically, it means being able to send the same message to different objects and get different result.
Polymorphism through Inheritance
We can achieve polymorphism through inheritance. For example
classGenericParser defparseraiseNotImplementedError, 'You must implement the parse method'endendclassJsonParser < GenericParserdefparseputs'An instance of the JsonParser class received the parse message'endendclassXmlParser < GenericParserdefparseputs'An instance of the XmlParser class received the parse message'endendHere the GenericParser is the base class. Class JsonParser and XmlParser are inherited from the GenericParser.
Now suppose we run the below code.
puts'Using the XmlParser' parser = parser.parse puts'Using the JsonParser' parser = parser.parseThe o…