У меня есть модуль с добавлением I18n:
require 'rails-i18n'
module I18nExtension
def translate_localization_format(locale, object, format, options)
puts __method__
...
end
end
I18n::Backend::Base.prepend(I18nExtension)
Это работает как ожидалось в Development and Console:
irb(main):002:0>I18n.l Time.now
translate_localization_format
=> "October 30, 2018 16:01 PDT"
Он живет в lib/i18n_ext
.
Однако в тестовой среде метод расширения не вызывается:
describe I18n do
specify "success" do
puts I18n.l Time.now
end
end
Этот код не печатает метод или вызывает I18nExtension#translate_localization_format
.
Однако модуль добавлен в обе среды.
irb(main):002:0> I18n::Backend::Base.ancestors.inspect
=> "[I18nExtension, I18n::Backend::Base, I18n::Backend::Transliterator]"
Тестовая среда:
[I18nExtension, I18n::Backend::Base, I18n::Backend::Transliterator]
Итак, как возможно, что расширение добавляется, но не вызывается? В чем разница между средами разработки и тестирования?
рельсы 4.2.10
rails-i18n 4.0.9
rspec 3.7.0