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à.