Я сохраняю значение в переменной класса внутри модуля, например:
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
Эти значения не изменятся во время выполнения, они просто изменят проект на проект.