Transforme tudo em um objeto com Proc e Lambda

Você sabe que tudo em Ruby é um objeto. Exceto blocos.

Você pode transformar esses blocos em objetos usando a função Proc.

proc = Proc.new do |object|
puts
object.inspect
end

Esta é a maneira mais comum de fazer isso e, em seguida, você pode chamar seu novo objeto por meio da função de chamada .

proc.call Object

A chamada do método é usada para executar o bloco. Em blocos, você pode fazer o que quiser. Um caso interessante é o do processamento sequencial. No Rails é freqüentemente usado na definição de escopos nomeados.

A outra maneira é usar lambda (<3):

lambda = lambda do |object|
puts
object.inspect
end

Basicamente, Proc e lambda funcionam da mesma maneira. Mas há uma pequena diferença, que é sobre o controle de fluxo, no caso return, break, redo, retry, e outros, vai quebrar o seu Proc.