我在我的代码中遇到了一个奇怪的错误。我有一个rails应用程序,在lib中有以下两个文件:
lib/module_one/module_two/class_one.rb
module ModuleOne
module Moduletwo
class ClassOne
class << self
def test
puts 'Class one'
ClassTwo.test
end
end
end
end
end
和
lib/module_one/module_two/class_two.rb
module ModuleOne
module ModuleTwo
class ClassTwo
def self.test
puts 'Class two'
end
end
end
end
现在我的问题是,当我进入控制台并编写时:
ModuleOne::ModuleTwo::ClassOne.test
它抛出以下内容:NameError: uninitialized constant ClassTwo
奇怪的是,这个问题似乎与使用 ofclass << self
而不是self.method
. 如果我像这样更改 class_one.rb 文件,它可以工作!:
module ModuleOne
module ModuleTwo
class ClassOne
def self.test
puts 'Class one'
ClassTwo.test
end
end
end
end
我在 application.rb 中加载文件,如下所示:
config.autoload_paths += %W(#{config.root}/lib)
这是rails中的错误,还是只是我弄错了?
我正在使用 rails 3.1.3 btw