Ruby模块帮助--查找错误的目录?

Ruby模块帮助--查找错误的目录?,ruby,ruby-on-rails-3,module,Ruby,Ruby On Rails 3,Module,大家好!我在理解模块方面遇到了问题——我有两个文件,一个是模块名为“modfile.rb”,另一个是运行代码的名为“main.rb”: # modfile.rb module Module1 def method1 puts "SUCCESS!" end end # main.rb require 'modfile' Module1.method1 不幸的是,不是成功!出现在我的屏幕上,我得到以下信息: <internal:lib/rubygems/custom

大家好!我在理解模块方面遇到了问题——我有两个文件,一个是模块名为“modfile.rb”,另一个是运行代码的名为“main.rb”:

# 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>'
:29:in'require':没有要加载的文件--modfile(LoadError)
from:29:in'require'
来自main.rb:1:in''
我认为(尽管我可能错了)Ruby正在寻找lib/。。。。文件保存在我的计算机上的Ruby目录中,而modfile.rb保存在与main.rb相同的目录中。如何解决此问题(除移动模块文件外?)


另外,一个指南建议我添加行“require'rubygems'”,但我已经添加了,并且得到了相同的错误。

如果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

。。。因为您正在将该方法作为类级方法调用。

请检查中的
require
require\u relative
之间的差异


在Ruby 1.9中,从搜索路径中删除了
目录。为了解决由此产生的问题,他们添加了
require\u relative

,如果我想使用“include”而不是“require”,那么这段代码会是什么样子?我不建议使用
include
。使用
require\u relative
。此外,是否有方法将一个问题的多个答案标记为正确?因为我也想看看你的回答