Ruby · Avançado · Inglês · Técnico
eval
Método do Kernel que executa uma string como código Ruby no contexto atual ou em um binding informado. Retorna o valor da última expressão.
Onde usar
Aparece em REPLs, geradores de código e metaprogramação antiga. No dia a dia, prefira define_method, send e class_eval com bloco.
Em código
x = 10
p eval("x * 2") # => 20
b = binding
eval("y = 5", b)
p eval("y + x", b) # => 15Exemplos
Never run eval on user input.
Nunca rode eval em entrada do usuário.
Replace the eval with define_method.
Troque o eval por define_method.
Cuidado
Nunca avalie texto vindo do usuário: é execução remota de código. Mesmo com string confiável, perde-se análise estática e rastreio de erros.
Origem
Abreviação de evaluate, avaliar.