Cuando require 'foo'
Ruby comprueba todos los directorios en la ruta de carga para un archivo foo.rb
y carga el primero que encuentra. Si no se encuentra un archivo llamado foo.rb
, y usted es no usando Rubygems, se genera un LoadError
.
Si son usando Rubygems (que probablemente se da que se incluye en Ruby 1.9+), a continuación, en lugar de elevar inmediatamente a LoadError
todas las gemas instaladas se buscaron para ver si uno contiene un archivo foo.rb
. Si se encuentra una Gema así, se agrega a la ruta de carga y se carga el archivo.
Puede manipular la ruta de carga usted mismo si desea asegurarse de que se utiliza una versión particular de una biblioteca. Normalmente, esto no es algo que se recomienda, pero este es el tipo de situación en la que le gustaría hacerlo.
Hay dos formas de agregar directorios a la ruta de carga. En primer lugar puede hacerlo en el código real, utilizando el $LOAD_PATH
(o $:
) variable global:
$LOAD_PATH.unshift '/path/to/the/gems/lib/'
require 'the_gem'
Tenga en cuenta que normalmente se desea añadir el lib
dir de la gema, no el directorio de nivel superior de la gema (en realidad esto puede variar dependiendo de la Gema real, y es posible que necesite agregar más de un directorio, pero lib
es la norma).
La otra forma es utilizar el modificador de línea de comandos para la -I
ruby
ejecutable:
$ ruby -I/path/to/the/gems/lib/ test.rb
De esta manera podría ser un poco más limpio, ya que normalmente no desea estar jugando con la trayectoria de la carga de dentro de tu código, pero si solo estás probando la biblioteca probablemente no importe mucho.
Simplemente use 'require 'gemname'' si creó' test.rb' en el directorio gem. –
¿tienes un gemfile? – apneadiving
Me gustaría crear test.rb fuera del directorio gem si es posible. Y no, no tengo un gemfile. – foobar