装载者.rb
puts '> This is the second file.'
加载演示.rb
puts 'This is the first (master) program file.'
load 'loadee.rb'
puts 'And back again to the first file.'
当我跑步时"ruby loaddemo.rb"
,这个效果很好。这两个文件都位于同一目录中,这就是我运行的目录。
但是,如果我将负载更改为 require,无论有或没有扩展名,我都会得到:
<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>'
我的问题当然是,为什么在这种情况下不需要工作?应该是吧? load 和 require 是否使用不同的路径?
红宝石版本 1.9.2
如果您只提供一个文件名require
,它只会在预定义的中查找$LOAD_PATH
目录。但是,如果您提供带有文件名的路径,它应该可以工作:
puts 'This is the first (master) program file.'
require './loadee.rb'
puts 'And back again to the first file.'
您还可以将项目的文件夹添加到加载路径:
$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.'
最后,你可以使用require_relative
反而:
puts 'This is the first (master) program file.'
require_relative 'loadee.rb'
puts 'And back again to the first file.'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)