Ruby模块帮助--查找错误的目录?
大家好!我在理解模块方面遇到了问题——我有两个文件,一个是模块名为“modfile.rb”,另一个是运行代码的名为“main.rb”: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
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
。此外,是否有方法将一个问题的多个答案标记为正确?因为我也想看看你的回答