当我从默认模块运行此代码时,我希望它通过mattr_accessor设置变量:
Jsonforem.user_class = "User"
然后运行foreman start
,我的shell中出现此错误:
22:49:40 web.1 | [44763] ! Unable to load application: NoMethodError: undefined method `user_class=' for Jsonforem:Module
这是我模块的代码:
require "jsonforem/engine"
module Jsonforem
mattr_accessor :user_class, :user_profile_links, :email_from_address,
:per_page, :sign_in_path, :moderate_first_post
def user_class
if @@user_class.is_a?(String)
begin
Object.const_get(@@user_class)
rescue NameError
@@user_class.constantize
end
end
end
end
到目前为止,我能让它发挥作用的唯一方法就是:
module Jsonforem
user_class = "User"
end
为什么上面的代码块有效,但我无法从模块外部设置变量?如果您需要上下文,我正在执行此处建议您在ruby gem中设置配置变量:http://guides.rubyonrails.org/engines.html
干杯
答案 0 :(得分:0)
lib目录中的模块在哪里?
您的模块之前应该加载。
把它放在config / initializers中然后尝试。
答案 1 :(得分:0)
要求解决了我的问题:
require "jsonforem"
Jsonforem.user_class = "User"