Ruby on Rails

Métaprogrammation Ruby

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 questions d'entretien·
Senior
1

Qu'est-ce que la métaprogrammation en Ruby ?

Réponse

La métaprogrammation est la capacité d'un programme à écrire ou modifier du code au moment de l'exécution. En Ruby, cela permet de définir dynamiquement des méthodes, des classes et des modules, rendant le code plus flexible et concis. Cette technique est largement utilisée dans les frameworks comme Rails pour créer des DSLs élégants et réduire la duplication de code.

2

Quel est le rôle de la méthode define_method en Ruby ?

Réponse

define_method permet de créer des méthodes dynamiquement à l'exécution. Elle prend un nom de méthode (symbole ou chaîne) et un bloc définissant le corps de la méthode. Contrairement à def, define_method capture les variables locales du scope englobant via une closure, ce qui est utile pour générer des méthodes avec des comportements paramétrés.

3

Quand la méthode method_missing est-elle invoquée par Ruby ?

Réponse

method_missing est appelée automatiquement lorsqu'un objet reçoit un appel de méthode qui n'existe pas dans sa chaîne d'héritage. Elle reçoit le nom de la méthode appelée et ses arguments, permettant de gérer dynamiquement ces appels. C'est la base de nombreux patterns de métaprogrammation comme les ghost methods utilisées dans ActiveRecord.

4

Quelle est la différence principale entre class_eval et instance_eval ?

5

Quel hook est appelé lorsqu'un module est inclus dans une classe ?

+17 questions d'entretien

Maîtrise Ruby on Rails pour ton prochain entretien

Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.

Commencer gratuitement