Пусть Rails 2.3.x игнорирует гем i18n
-
24-10-2019 - |
Вопрос
У меня есть проект Rails 2.3.5, в котором используются функции локализации Rails.У меня также установлена бета-версия Rails 3 (которая зависит от гема i18n).Rails 2.3.5 с легкостью справится с локализацией самостоятельно (без установки i18n), однако, если гем i18n доступен, он использует его.
Недавно я обновил свои драгоценные камни, и теперь у меня установлены версии 0.3.7 и 0.4.0 i18n.Rails, конечно, хочет загрузить и использовать последнюю версию, что вызывает ошибки в моем проекте.Я попытался установить версию драгоценного камня на 0.3.7, что позволяет обойти ошибки в веб-приложении.Однако мы используем resque и resque_mailer для задержки отправки сообщений.Когда работник берет задание почтовой программы из очереди, он игнорирует мое требование config.gem в Environment.rb и все равно использует версию 0.4.0.
В идеале я бы хотел сказать Rails вообще не использовать гем i18n.Как мне это сделать?
Обновлять: Начиная с бета-версии 4, Rails 3 теперь требует i18n версии 0.4.1.Я не понимаю, как больше людей не сталкиваются с этой проблемой, как может показаться сейчас, если у вас установлены и Rails 2, и Rails 3, вы столкнетесь с ней.
Решение
Другие советы
Вы могли бы использовать Бандлер или РВМ драгоценные камни чтобы сделать драгоценный камень i18n недоступным из вашего приложения.Или вы можете обновить свое приложение Rails.
- Заморозить версию рельсов:
rake VERSION=2.3.5 rails:freeze:gems
- Исправьте версию в строке 24 файлаvendor/rails/activesupport/lib/active_support/vendor.rb, чтобы:
gem 'i18n', '>= 0.1.3', '< 0.4.0'
Или просто отредактируйте: /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor.rb
И повернуть gem 'i18n', '>= 0.1.3'
В gem 'i18n', '0.1.3'