To be or not to be

Andaba yo escribiendo un poco de código cuando me topado con una

if args.is_a?(Array)
  args.each do |i|
    if i.is_a?(Hash)
      i.each_pair do |k,v|
        self[k] = v
      end
    end
  end
end

Ruby permite especificar una condición después de un bloque decidiendo si este se ha de ejecutar o no y de paso, a mi parecer mejora la lectura:

args.each { |i|
  i.each_pair { |k,v|
    self[k] = v
  } if a.is_a?(Hash)
} if args.is_a?(Array)

O esta otra forma mucho mas compacta:

args.each { |i|
  i.each_pair { |k,v| self[k] = v } if i.is_a?(Hash)
} if args.is_a?(Array)
Distribuir contenido