Ruby · Avançado · Inglês · Técnico
class eval
Método de Module que executa um bloco ou string no contexto da classe, como se você estivesse dentro do corpo dela. Permite reabrir classes e definir métodos dinamicamente.
Onde usar
Aparece em metaprogramação, bibliotecas e DSLs que precisam reabrir uma classe recebida como argumento. Prefira a forma com bloco, mais segura que a com string.
Em código
class Cachorro; end
Cachorro.class_eval do
def latir = "au"
end
p Cachorro.new.latir # => "au"
p Cachorro.instance_methods(false)
# => [:latir]Exemplos
The gem reopens your class with class_eval.
A gem reabre sua classe com class_eval.
Prefer the block form of class_eval over strings.
Prefira a forma com bloco do class_eval em vez de strings.
Cuidado
Não confunda com instance_eval: no class_eval, def cria métodos de instância; no instance_eval, def cria métodos singleton do receptor.
Sinônimos
module_eval