在rails模块中设置变量不符合预期

时间:2014-12-07 09:53:12

标签: ruby-on-rails-4

当我从默认模块运行此代码时,我希望它通过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

干杯

2 个答案:

答案 0 :(得分:0)

lib目录中的模块在哪里?
您的模块之前应该加载。 把它放在config / initializers中然后尝试。

答案 1 :(得分:0)

要求解决了我的问题:

require "jsonforem"
Jsonforem.user_class = "User"