如果我在lib
的文件中写一个类,我就能找到它。如果我在同一个文件中写一个模块,我找不到它。我错过了什么吗?
文件如下:
文件内容为:
class Cool
end
module Flags
Countries = []
end
如果我尝试从控制器中调用它们:
class MainController < ApplicationController
def index
Cool.new # works
Flags::Countries # uninitialized constant MainController::Flags
end
end
答案 0 :(得分:0)
可能不是您的具体方案的解决方案,只是几个相关点:
Rails自动加载需要类/模块遵循命名空间规则:
Flags::Countries -> <autoload paths>/flags/countries.rb
http://urbanautomaton.com/blog/2013/08/27/rails-autoloading-hell/
不要认为/ lib /是标准的自动加载路径,因此您需要确保将其添加到您的路径中。