0

可能重复:
为什么 Ruby 1.9.2 删除“.” 来自 LOAD_PATH,还有什么替代方法?要求命令在自定义代码上的 Snow Leopard Ruby调用失败
的 bash irb 中不起作用
require

我在跑:

  • OS X 10.6.8
  • RVM 1.12.3 与 Ruby 1.9.3

假设我在一个目录中有以下文件:

a.rb

require 'b'
puts message_from_b

b.rb

def message_from_b
    "foo"
end

运行 a.rb 时出现以下LoadError

/Users/Alex/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': 无法加载此类文件 -- b (LoadError )

但是,如果我将a.rb的第 1 行替换为require './b',它可以正常工作。

在查看其他人的 Ruby 代码时,似乎他们不需要指定当前目录,因为它需要同一目录中的文件。

那么,为什么我必须这样做呢?这与我的 RVM 安装有关吗?

4

1 回答 1

2

文件b.rb不在您的加载路径中。将b.rb's 目录添加到您的加载路径

$LOAD_PATH.unshift(File.dirname(__FILE__)) # assuming it's the current directory

或使用

require_relative 'b'
于 2012-06-08T11:34:05.703 回答