1

我想包括TestModuleMyModule

# in test_module.rb
module TestModule
    SOMETHING = [1, 2, 3]
end

# in my_module.rb
module MyModule
    include TestModule

    def my_method
        "testing"
    end
end

我收到此错误:

Routing Error: uninitialized constant MyModule::TestModule

我已经仔细检查了 Rails 命名约定。知道为什么这不起作用吗?

更多信息config.autoload_paths += ...inapplication.rb被注释掉。然而,其他模块/lib正在以某种方式加载。

更多信息 2:我认为 rails 看不到新文件test_module.rb。如果我将新模块添加到包含模块的现有文件中,那么包含新模块就可以了。$LOAD_PATH 是否有某种轨道清理或刷新过程?

4

2 回答 2

2

尝试在文件顶部添加“require”,如下所示:

# in my_module.rb
require 'test_module'
module MyModule
  include TestModule
  ...
于 2012-04-04T18:46:51.870 回答
2

你也可以试试这个:

# in my_module.rb

load 'test_module.rb'

module MyModule
   include ::TestModule

   def my_method
      "testing"
   end
end

引用顶级命名空间。

于 2012-04-04T19:02:44.540 回答