Solo haz esto:
require_relative 'tokenizer'
Si coloca esto en un archivo Ruby que está en el mismo directorio tokenizer.rb
, funcionará bien sin importar cuál sea su directorio de trabajo actual (CWD).
Explicación de por qué esta es la mejor manera.
Las otras respuestas afirman que debe usar require './tokenizer'
, pero esa es la respuesta incorrecta , porque solo funcionará si ejecuta su proceso Ruby en el mismo directorio que se tokenizer.rb
encuentra. Casi la única razón para considerar el uso de require
esa manera sería si necesita admite Ruby 1.8, que no tiene require_relative
.
La require './tokenizer'
respuesta podría funcionar para usted hoy, pero limita innecesariamente las formas en que puede ejecutar su código Ruby. Mañana, si desea mover sus archivos a un directorio diferente, o simplemente desea iniciar su proceso Ruby desde un directorio diferente, tendrá que repensar todas esas require
declaraciones.
Usar require
para acceder a los archivos que están en la ruta de carga es algo bueno y las gemas de Ruby lo hacen todo el tiempo. Pero no debe comenzar el argumento require
con un a .
menos que esté haciendo algo muy especial y sepa lo que está haciendo.
Cuando escribe código que hace suposiciones sobre su entorno, debe pensar cuidadosamente sobre qué suposiciones hacer. En este caso, hay hasta tres formas diferentes de requerir el tokenizer
archivo, y cada una asume de manera diferente:
require_relative 'path/to/tokenizer'
: Asume que la ruta relativa entre los dos archivos fuente de Ruby se mantendrá igual.
require 'path/to/tokenizer'
: Asume que path/to/tokenizer
está dentro de uno de los directorios en la ruta de carga ( $LOAD_PATH
). Esto generalmente requiere una configuración adicional, ya que debe agregar algo a la ruta de carga.
require './path/to/tokenizer'
: Asume que la ruta relativa desde el directorio de trabajo actual del proceso Ruby hasta tokenizer.rb
se mantendrá igual.
Creo que para la mayoría de las personas y la mayoría de las situaciones, las suposiciones hechas en las opciones n. ° 1 y n. ° 2 tienen más probabilidades de ser ciertas con el tiempo.