require无法找到同一目录的.rb文件

时间:2013-01-10 09:24:37

标签: ruby

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在同一目录中!如何解决这个问题?

提前非常感谢。我为这样的菜鸟问题道歉。

2 个答案:

答案 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图书馆中进行搜索。