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.