La méthode "Require" dans Ruby

Afin de créer des composants réutilisables, ceux qui peuvent être facilement utilisés dans d'autres programmes, un langage de programmation doit avoir un moyen d'importer en douceur ce code au moment de l'exécution. Dans Rubis, les exiger est utilisée pour charger un autre fichier et exécuter toutes ses déclarations. Cela sert à importer toutes les classes et méthode définitions dans le fichier. En plus d'exécuter simplement toutes les instructions du fichier, la méthode require conserve également la trace des fichiers qui ont été précédemment requis et, par conséquent, ne nécessitera pas deux fois un fichier.

Utilisation de la méthode 'require'

La méthode require prend le nom du fichier à exiger, en tant que chaîne, comme un seul argument. Il peut s'agir d'un chemin d'accès au fichier, tel que ./lib/some_library.rb ou un nom abrégé, tel que some_library. Si l'argument est un chemin d'accès et un nom de fichier complet, la méthode require y recherchera le fichier. Cependant, si l'argument est un nom abrégé, la méthode require recherchera un certain nombre de répertoires prédéfinis sur votre système pour ce fichier. L'utilisation du nom abrégé est la façon la plus courante d'utiliser la méthode require.

instagram viewer

L'exemple suivant montre comment utiliser l'instruction require. Le fichier test_library.rb est dans le premier bloc de code. Ce fichier imprime un message et définit une nouvelle classe. Le deuxième bloc de code est le fichier test_program.rb. Ce fichier charge le test_library.rb fichier en utilisant cette méthode et crée un nouveau TestClass objet.

met "test_library inclus"
classe TestClass
def initialize
met "objet TestClass créé"
fin
fin
#! / usr / bin / env rubis
nécessite «test_library.rb»
t = TestClass.new

Évitez les conflits de noms

Lors de l'écriture de composants réutilisables, il est préférable de ne pas déclarer de nombreuses variables dans la portée globale en dehors de toute classe ou méthode ou en utilisant le $ préfixe. C'est pour empêcher quelque chose appelé "pollution de l'espace de noms"Si vous déclarez trop de noms, un autre programme ou bibliothèque peut déclarer le même nom et provoquer un conflit de noms. Lorsque deux bibliothèques complètement indépendantes commencent à changer les variables l'une de l'autre accidentellement, les choses se cassent - apparemment au hasard. C'est un bug très difficile à localiser et il vaut mieux juste l'éviter.

Pour éviter les conflits de noms, vous pouvez tout enfermer dans votre bibliothèque à l'intérieur d'un module déclaration. Cela nécessitera que les gens se réfèrent à vos classes et méthodes par un nom complet tel que MyLibrary:: my_method, mais cela en vaut la peine car les conflits de noms ne se produisent généralement pas. Pour les personnes qui souhaitent avoir tous vos noms de classe et de méthode dans la portée globale, ils peuvent le faire en utilisant le comprendre déclaration.

L'exemple suivant répète l'exemple précédent mais englobe tout dans un Ma bibliothèque module. Deux versions de my_program.rb sont donnés; celui qui utilise le comprendre déclaration et une qui ne fait pas.

met "test_library inclus"
module MyLibrary
classe TestClass
def initialize
met "objet TestClass créé"
fin
fin
fin
#! / usr / bin / env rubis
nécessite «test_library2.rb»
t = MyLibrary:: TestClass.new
#! / usr / bin / env rubis
nécessite «test_library2.rb»
inclure MyLibrary
t = TestClass.new

Évitez les chemins absolus

Étant donné que les composants réutilisables sont souvent déplacés, il est également préférable de ne pas utiliser de chemins absolus dans vos appels requis. Un chemin absolu est un chemin comme /home/user/code/library.rb. Vous remarquerez que le fichier doit se trouver à cet emplacement exact pour fonctionner. Si le script est déplacé ou que votre répertoire personnel change, cette instruction require cessera de fonctionner.

Au lieu de chemins absolus, il est souvent courant de créer un ./lib dans le répertoire de votre programme Ruby. le ./lib est ajouté au répertoire $ LOAD_PATH variable qui stocke les répertoires dans lesquels la méthode require recherche les fichiers Ruby. Après cela, si le fichier my_library.rb est stocké dans le répertoire lib, il peut être chargé dans votre programme avec un simple nécessite 'ma_bibliotheque' déclaration.

L'exemple suivant est le même que le précédent test_program.rb exemples. Cependant, il suppose test_library.rb fichier est stocké dans le ./lib et le charge en utilisant la méthode décrite ci-dessus.

#! / usr / bin / env rubis
$ LOAD_PATH << './lib'
nécessite «test_library.rb»
t = TestClass.new
instagram story viewer