Comment lister toutes les méthodes d'un objet en ruby ?

Créé le 12 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - ruby-on-railsruby

Lorsque vous utilisez le langage Ruby, vous pouvez utiliser la méthode .methods pour récupérer une liste de toutes les méthodes accessibles via un objet donné. En effet, cette méthode retourne un tableau contenant les noms des méthodes accessibles, ainsi que les méthodes héritées de ses super-classes, ce qui vous permet d'avoir une vue complète des méthodes disponibles. De plus, si vous souhaitez ne récupérer que les méthodes définies sur l'objet et pas celles héritées des super-classes, vous pouvez alors utiliser la méthode .instance_methods. Par exemple, si nous créons un objet « Personne » avec des méthodes « saluer » et « se_presenter », nous pouvons récupérer la liste de toutes les méthodes de l'objet en exécutant la commande suivante : ```ruby class Personne def saluer puts "Bonjour !" end def se_presenter puts "Je m'appelle John Doe." end end personne = Personne.new personne.methods # => [:saluer, :se_presenter, ...] ```


Comment récupérer uniquement les méthodes définies sur un objet ?

Si vous souhaitez récupérer uniquement les méthodes définies directement sur l'objet et pas celles héritées des super-classes, vous pouvez alors utiliser la méthode .instance_methods. Ainsi, cette méthode retournera uniquement les méthodes définies sur l'objet et non les méthodes héritées des super-classes. Par exemple, si nous réutilisons l'objet « Personne » créé précédemment, nous pouvons récupérer uniquement les méthodes définies sur cet objet en exécutant la commande suivante : ```ruby personne.instance_methods # => [:saluer, :se_presenter] ```


Comment trouver des informations sur une méthode spécifique ?

Si vous souhaitez récupérer des informations sur une méthode spécifique, vous pouvez également utiliser la méthode .method. En effet, cette méthode prend en paramètre le nom de la méthode dont vous souhaitez récupérer des informations et retourne alors un objet « Method » contenant toutes les informations concernant cette méthode. Par exemple, si nous souhaitons récupérer des informations sur la méthode « saluer » de notre objet « Personne », nous pouvons exécuter la commande suivante : ```ruby personne.method(:saluer) # => #<method: personne> ```


Comment lister toutes les variables d'un objet ?

Si vous souhaitez récupérer la liste des variables d'un objet, vous pouvez alors utiliser la méthode .instance_variables. Ainsi, cette méthode retourne un tableau contenant la liste des variables accessibles via l'objet. Par exemple, si nous définissons une variable sur notre objet « Personne » et que nous souhaitons récupérer la liste des variables de cet objet, nous pouvons exécuter la commande suivante : ```ruby personne.instance_variable_set(:@age, 25) personne.instance_variables # => [:@age] ```


Comment lister toutes les constantes d'un objet ?

Si vous souhaitez récupérer la liste des constantes d'un objet, vous pouvez alors utiliser la méthode .constants. Ainsi, cette méthode retourne un tableau contenant la liste des constantes accessibles via l'objet. Par exemple, si nous définissons une constante sur notre objet « Personne » et que nous souhaitons récupérer la liste des constantes de cet objet, nous pouvons exécuter la commande suivante : ```ruby Personne::PI = 3.14 Personne.constants # => [:PI] ```


Comment lister tous les modules inclus dans un objet ?

Si vous souhaitez récupérer la liste des modules inclus dans un objet, vous pouvez alors utiliser la méthode .included_modules. Ainsi, cette méthode retourne un tableau contenant la liste des modules inclus dans l'objet. Par exemple, si nous incluons un module « Salutation » dans notre objet « Personne » et que nous souhaitons récupérer la liste des modules inclus dans cet objet, nous pouvons exécuter la commande suivante : ```ruby module Salutation def bonjour puts "Bonjour !" end end class Personne include Salutation end Personne.included_modules # => [Salutation, Kernel] ```

</method:>