Rails模块和路由

时间:2012-04-04 18:14:08

标签: ruby-on-rails module routing include

我想在TestModule中加入MyModule

# 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 += ...中的application.rb已被注释掉。但是/lib中的其他模块正在以某种方式加载。

更多信息2 :我认为rails无法看到新文件test_module.rb。如果我将新模块添加到包含模块的现有文件中,则包含新模块的工作原理。对于$ LOAD_PATH还有什么类型的rails清理或刷新过程?

2 个答案:

答案 0 :(得分:2)

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

# in my_module.rb
require 'test_module'
module MyModule
  include TestModule
  ...

答案 1 :(得分:2)

你也可以试试这个:

# in my_module.rb

load 'test_module.rb'

module MyModule
   include ::TestModule

   def my_method
      "testing"
   end
end

引用顶级命名空间。