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.rbencuentra. Casi la única razón para considerar el uso de requireesa 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 requiredeclaraciones.
Usar requirepara 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 requirecon 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 tokenizerarchivo, 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/tokenizerestá 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.rbse 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.