Ruby中的require命令究竟是如何工作的?我使用以下两个位于同一目录中的文件对其进行了测试。
test.rb
require 'requirements'
square(2)
requirements.rb
def square(x)
x*x
end
但是当我在文件“test.rb”和“requirements.rb”所在的目录中运行ruby test.rb时,我收到错误:
/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- requirements (LoadError)
from /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from test.rb:1:in `<main>'
我认为这意味着它无法找到requirements.rb文件。但它与test.rb在同一目录中!如何解决这个问题?
提前非常感谢。我为这样的菜鸟问题道歉。
答案 0 :(得分:33)
IIRC,ruby 1.9不包含LOAD_PATH的当前目录('。')。您可以执行以下操作之一:
# specify relative path
require './test1'
# use relative method
require_relative 'test1'
# add current dir to LOAD_PATH
$LOAD_PATH.unshift '.'
require 'test1'
答案 1 :(得分:3)
我也刚开始学习红宝石是如何工作的,所以我不确定这是否有帮助。但是尝试require_relative而不是require,我认为它会起作用 Afaik需要在ruby图书馆中进行搜索。