ruby - nominations - carga funciona en ruta local, requiere no
international emmy awards 2018 nominees (2)
Proporcionar una ruta con el nombre de archivo no me funcionó, y no quería meter un montón de rutas en mi $LOAD_PATH
.
Revisando la documentation , encontré require_relative
.
require_relative ''loadee''
Funciona tanto en 1.9.2
como en 2.1.2
.
La documentation indica que require
no tiene la intención de buscar rutas relativas en absoluto, y tampoco de load
.
loadee.rb
puts ''> This is the second file.''
loaddemo.rb
puts ''This is the first (master) program file.''
load ''loadee.rb''
puts ''And back again to the first file.''
Cuando ejecuto "ruby loaddemo.rb"
, esto funciona bien. Ambos archivos están en el mismo directorio, y ese es el directorio desde el que ejecuto.
Pero si cambio la carga a un requerimiento, y con o sin la extensión obtengo:
<internal:lib/rubygems/custom_require>:29:in `require'': no such file to load
-- loadee.rb (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require''
from loaddemo.rb:2:in `<main>''
Mi pregunta es, por supuesto, ¿por qué no es necesario trabajar en este caso? Debería, ¿verdad? ¿Carga y requiere usar diferentes caminos?
Ruby version 1.9.2
Si proporciona solo el nombre de archivo que require
, solo se buscará en los directorios $LOAD_PATH
predefinidos. Sin embargo, si proporciona una ruta con su nombre de archivo, debería funcionar:
puts ''This is the first (master) program file.''
require ''./loadee.rb''
puts ''And back again to the first file.''
También puede agregar la carpeta de su proyecto a la ruta de carga en su lugar:
$LOAD_PATH.unshift File.dirname(__FILE__)
puts ''This is the first (master) program file.''
require ''loadee.rb''
puts ''And back again to the first file.''
Y por último, puedes usar require_relative
lugar:
puts ''This is the first (master) program file.''
require_relative ''loadee.rb''
puts ''And back again to the first file.''