# modfile.rb
module Module1
def method1
puts "SUCCESS!"
end
end
# main.rb
require 'modfile'
Module1.method1
不幸的是,而不是成功!出现在我的屏幕上,我明白了:
<internal:lib/rubygems/custom_require>:29:in 'require': no such file to load -- modfile (LoadError)
from <internal:lib/rubygems/custom_require>:29:in 'require'
from main.rb:1:in '<main>'
我认为(虽然我可能错了)Ruby正在寻找我计算机上Ruby目录中的lib / ....文件,而modfile.rb则保存在与main.rb相同的目录中。如何解决此问题(除了移动模块的文件?)
PS。一个指南建议我添加“require'rubygems'”行,但我已经做了并得到了同样的错误。
答案 0 :(得分:1)
require
和require_relative
之间的差异
在Ruby 1.9中,.
目录已从搜索路径中删除。为解决此问题,他们添加了require_relative
。
答案 1 :(得分:0)
如果modfile.rb和main.rb在同一目录中,请确保你从它所在的目录中调用main.rb,即:
ruby main.rb
我认为这是Ruby解释器将查找任何需要文件的目录。
编辑:正如@ the-tin-man指出的那样,Ruby 1.9的行为发生了变化。
为了完全安全起见,你可以这样做:
require File.join(File.dirname(__FILE__), "modfile")
另一件事:
def method1
......应该是:
def self.method1
...因为您将该方法作为类级方法调用。