我将值存储在模块内的类变量中,例如:
module TranslationEnhancer def self.install! klass @dictionaries ||= [] << klass end ... end
我从config / initializers中的初始化程序中调用它:
require Rails.root + "lib" + "translation_enhancer.rb" TranslationEnhancer::install! TranslationDictionary
现在,如果我在开发环境中启动服务器,在第一次请求期间一切正常.然而,在那个请求之后,@dictionaries突然变为零.我已经在TranslationEnhancer中评论了所有其他代码,因此我绝对相信每次执行请求时都必须重新加载整个模块.
我试图将模块移到lib目录之外(将其移动到lib_unloadable),然后我尝试:
ActiveSupport::Dependencies.explicitly_unloadable_constants << "TranslationEnhancer"
但又失败了.我不知道如何解决这个问题,请帮忙.
得到Ruby 1.9.2 @ Rails 3.1.rc4.
编辑:我知道我可以将字典设置为常量.但是我想使用TranslationEnhancer作为库 – 所以我可以在不同的项目中不加改变地使用它并安装不同的目录,例如:
TranslationEnhancer.install! EnglishDirectory,FrenchDirectory
这些值在运行时期间会发生变化,它们只会将项目更改为项目.