Linguagem Interpretada e Classes Abertas
Como o Ruby é uma linguagem interpretada, não há um processo de compilação para um binário executável, como acontece na linguagem C, por exemplo. Em Ruby, existe um arquivo com a extensão .rb e um programa cujo papel é interpretar o código deste arquivo, transformando em instruções de máquina e as executando.
Ao instalar o Ruby, você pode verificar sua versão através da linha de comando.
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
Além de executar o interpretador Ruby:
$ irb
irb(main):001:0>
O interpretador permite que métodos sejam usados em tempo real.
$ irb
irb(main):001:0> puts "Seja bem vindo a CJR!"
Seja bem vindo a CJR!
=> nil
O Ruby possui um diferencial em relação a suas classes, elas são abertas. Podemos ilustrar a resolução de um problema envolvendo classes com um exemplo:
def plural(palavra)
"#{palavra}s"
end
puts plural "caneta"
puts plural "carro"
Executando o arquivo pela linha de comando, usando ruby nome_do_arquivo.rb, temos a seguinte saída:
$ ruby plural.rb
canetas
carros
Caso queiramos usar um método no próprio objeto, alterando a sintaxe. No lugar de
plural "caneta"
usassemos
"caneta".plural
Caso executássemos esse código, obteriamos o seguinte erro:
irb(main):002:0> "caneta".plural
NoMethodError: undefined method `plural' for "caneta":String
from (irb):2
from /usr/local/bin/irb:11:in `<main>'
Isso aconteceu porque não há um método definido que possa ser usado no objeto string. Podemos corrigir isso da seguinte forma:
class String
def plural
"#{self}s"
end
end
puts "caneta".plural
Executando o arquivo pela linha de comando:
$ ruby correcao.rb
canetas
Você não precisa se preocupar neste exato momento sobre classes e métodos, apenas veja como as classes, que são entidades muito importantes em Ruby, podem ser modificadas, apenas reabrindo-a e adicionando mais métodos, o que, em geral, não é possível em outras linguagens.