Ruby on Rails

Metaprogramação em Ruby

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 perguntas de entrevista·
Senior
1

O que é metaprogramação em Ruby?

Resposta

A metaprogramação é a capacidade de um programa de escrever ou modificar código em tempo de execução. Em Ruby, isso permite definir métodos, classes e módulos dinamicamente, tornando o código mais flexível e conciso. Essa técnica é amplamente usada em frameworks como Rails para criar DSLs elegantes e reduzir a duplicação de código.

2

Qual é o propósito do método define_method no Ruby?

Resposta

define_method permite criar métodos dinamicamente em tempo de execução. Ele recebe um nome de método (símbolo ou string) e um bloco que define o corpo do método. Diferentemente de def, define_method captura as variáveis locais do escopo envolvente por meio de uma closure, o que é útil para gerar métodos com comportamentos parametrizados.

3

Quando o método method_missing é invocado pelo Ruby?

Resposta

method_missing é chamado automaticamente quando um objeto recebe uma chamada de método que não existe em sua cadeia de herança. Ele recebe o nome do método chamado e seus argumentos, permitindo o tratamento dinâmico dessas chamadas. Essa é a base de muitos padrões de metaprogramação, como os ghost methods usados no ActiveRecord.

4

Qual é a principal diferença entre class_eval e instance_eval?

5

Qual hook é chamado quando um module é incluído em uma classe?

+17 perguntas de entrevista

Domine Ruby on Rails para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis