La prima cosa che spiazza chi arriva a Ruby da JavaScript è che tutto è un oggetto. Non "quasi tutto": proprio tutto, numeri e nil compresi.
42.class # => Integer
42.even? # => true
(-5).abs # => 5
"ciao".upcase # => "CIAO"
nil.to_a # => []
3.times { print "yo " } # => yo yo yo
Non esistono "funzioni globali" appiccicate ai tipi primitivi: chiami sempre un metodo su un oggetto. Anche 3.times è un metodo dell'oggetto 3.
Il bello è la coerenza: una volta capito il modello, esplori qualsiasi valore con .methods e scopri cosa sa fare. Ruby premia la curiosità.