我想在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清理或刷新过程?
答案 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
引用顶级命名空间。