- 2 spaces (not tab) identations;
- use 
||, 
&&, 
! instead of 
or, 
and and 
not
- use 
unless instead of 
if !
- use 
until instead of 
while !
- use 
dup instead of 
clone
- use 
yield instead of Procs
- use 
alias_method instead of 
alias (
Motivation)
- in method calls, avoid parenthesis whenever possible.
Exceptions:
  1. before block: 
meth(args) { code }  instead of 
meth args { code } 
  2. as param: 
meth1 arg1, arg2, meth2(argX, argY, argZ) instead of 
meth1 arg1, arg2, meth2 argX, argY, argZ
  3. around expressions: 
meth(a ? b : c) instead of 
meth a ? b : c
  4. before method chaining: 
meth1(a).meth2 instead of 
meth1 a.meth2
  5. after super: 
super(a, b, c) instead of 
super a, b, c
- use symbols instead of strings whenever possible (in case of immutable strings), specially in hash keys. Use to_s when necessary
- in default parameteres, use 
nil instead of 
''. Example: 
def fn astring = nil. Use to_s when necessary. Motivation: 
if astring is better than 
unless astring.empty?.
- within defs, duplicate arguments to avoid then be overwritten.
Example:
class X
  def fn a
    # uses a copy of a
    a = a.dup
    # modifies a with no worries
    a.delete.format.kill.zerofill.add(rand(42)).scramble
  end
end
a = 'hihaha'
X.new.fn a
puts a           #=> 'hihaha'
Stay tuned with precedences! They rules the exceptions.
- if you do the right way, you avoid unnecessary remarks to explain the exceptions.