Я использовал идею @ Евгения вернуться к методу ActiveSupport (и он получил счастливую зеленую галочку), но сделал это таким образом, чтобы избежать дублирования кода. Сначала мы проверяем, используем ли мы версию i18n, и если мы используем ее, мы используем remove_method
, чтобы стереть ее (она была добавлена открытием класса), и позволить модулю ActiveSupport 2.3.14 заполниться (заметьте, я не используйте undef
, который также стирает переопределение модуля).
Итак, в инициализатор входит код:
begin
{}.slice(:a) # ActiveSupport's slice is fine with this; i18n's is not
rescue IndexError
class Hash
remove_method :slice #kill i18n's implementation, allow the ActiveSupport module to work
end
end