Как проверить модуль I18n с добавленным модулем в Rails? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть модуль с добавлением 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

...