Para crear componentes reutilizables, que se puedan usar fácilmente en otros programas, un lenguaje de programación debe tener alguna forma de importar ese código sin problemas en tiempo de ejecución. En Ruby, el método require se usa para cargar otro archivo y ejecutar todas sus declaraciones. Esto sirve para importar todas las definiciones de clase y método en el archivo. Además de simplemente ejecutar todas las declaraciones en el archivo, el método require también realiza un seguimiento de qué archivos se han requerido previamente y, por lo tanto, no requerirá un archivo dos veces.
Usando el & amp; apos; require & amp; apos; Método
El método require toma el nombre del archivo para requerir, como una cadena, como un solo argumento. Esto puede ser una ruta al archivo, como ./lib/some_library.rb o un nombre abreviado, como some_library . Si el argumento es una ruta y un nombre de archivo completo, el método require buscará el archivo. Sin embargo, si el argumento es un nombre acortado, el método require buscará en un número de directorios predefinidos en su sistema ese archivo. Usar el nombre abreviado es la forma más común de usar el método require.
Video destacado
El siguiente ejemplo demuestra cómo usar la instrucción require. El archivo test_library.rb está en el primer bloque de código. Este archivo imprime un mensaje y define una nueva clase. El segundo bloque de código es el archivo test_program.rb . Este archivo carga el archivo test_library.rb usando therecomemethod y crea un nuevo objeto TestClass .
pone & amp; quot; test_library incluido & amp; quot ;
& lt; br & gt ;
clase TestClass
& lt; br & gt ;
def inicializar
& lt; br & gt ;
pone & amp; quot; TestClass objeto creado & amp; quot ;
& lt; br & gt ;
final
& lt; br & gt ;
final & lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
#!/ usr / bin / env ruby
& lt; br & gt ;
require & amp; apos; test_library.rb & amp; apos ;
& lt; br & gt ;
t = TestClass.new & lt; / br & gt ;
& lt; / br & gt ;
Evite los bloqueos de nombres
Al escribir componentes reutilizables, es mejor que no declare muchas variables en el alcance global fuera de cualquier clase o método o utilizando el prefijo $ . Esto es para evitar algo llamado & amp; quot; namespace contaminación.& amp; quot; Si declara demasiados nombres, otro programa o biblioteca podría declarar el mismo nombre y causar un choque de nombres. Cuando dos bibliotecas completamente no relacionadas comienzan a cambiarse accidentalmente entre sí y las variables de Apos;, las cosas se romperán, aparentemente al azar. Este es un error muy difícil de rastrear y es mejor para evitarlo.
Para evitar enfrentamientos de nombres, puede encerrar todo en su biblioteca dentro de una declaración de módulo. Esto requerirá que las personas se refieran a sus clases y métodos con un nombre completamente calificado como MyLibrary :: my_method , pero vale la pena ya que los enfrentamientos de nombres generalmente ganaron y no ocurren. Para las personas que desean tener todos sus nombres de clase y método en el ámbito global, pueden hacerlo usando la declaración include .
El siguiente ejemplo repite el ejemplo anterior pero encierra todo en un módulo MyLibrary . Se dan dos versiones de my_program.rb ; uno que usa la instrucción incluye y otro que no.
pone & amp; quot; test_library incluido & amp; quot ;
& lt; br & gt ;
módulo MyLibrary
& lt; br & gt ;
clase TestClass
& lt; br & gt ;
def inicializar
& lt; br & gt ;
pone & amp; quot; TestClass objeto creado & amp; quot ;
& lt; br & gt ;
final
& lt; br & gt ;
final
& lt; br & gt ;
final & lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
#!/ usr / bin / env ruby
& lt; br & gt ;
require & amp; apos; test_library2.rb & amp; apos ;
& lt; br & gt ;
t = MyLibrary :: TestClass.new & lt; / br & gt ;
& lt; / br & gt ;
#!/ usr / bin / env ruby
& lt; br & gt ;
require & amp; apos; test_library2.rb & amp; apos ;
& lt; br & gt ;
incluye MyLibrary
& lt; br & gt ;
t = TestClass.new & lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
Evite caminos absolutos
Debido a que los componentes reutilizables a menudo se mueven, también es mejor no usar rutas absolutas en sus llamadas requeridas. Una ruta absoluta es una ruta como /home/user/code/library.rb . Usted & amp; apos; ll notará que el archivo debe estar en esa ubicación exacta para poder trabajar. Si alguna vez se mueve el script o su directorio de inicio cambia, esa declaración requiere que deje de funcionar.
En lugar de caminos absolutos, a menudo es común crear un .Directorio / lib en su directorio Ruby program & amp; apos; s. El .El directorio / lib se agrega a la variable $ LOAD_PATH que almacena los directorios en los que el método requerido busca archivos Ruby. Después de eso, si el archivo my_library.rb se almacena en el directorio lib, se puede cargar en su programa con un simple require & amp; apos; my_library & amp; apos; declaración.
El siguiente ejemplo es el mismo que los ejemplos anteriores test_program.rb . Sin embargo, supone que el archivo test_library.rb se almacena en el archivo ./ lib directorio y lo carga utilizando el método descrito anteriormente.
#!/ usr / bin / env ruby
& lt; br & gt ;
$ LOAD_PATH & amp; lt; & amp; lt; & amp; apos ;./ lib & amp; apos ;
& lt; br & gt ;
require & amp; apos; test_library.rb & amp; apos ;
& lt; br & gt ;
t = TestClass.new & lt; / br & gt ;
& lt; / br & gt ;
& lt; / br & gt ;
& amp; # x203A; Informática