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

时间:2011-06-04 21:02:55

标签: 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_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'”行,但我已经做了并得到了同样的错误。

2 个答案:

答案 0 :(得分:1)

检查Ruby: require vs require_relative - best practice to workaround running in both Ruby <1.9.2 and >=1.9.2

requirerequire_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

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