让Rails 2.3.x忽略i18n gem

我有一个Rails 2.3.5项目,它使用Rails的本地化function。 我也碰巧安装了Rails 3 beta(这取决于i18n gem)。 Rails 2.3.5很乐意自己处理本地化(没有安装i18n),但是如果i18n gem可用,它就会使用它。

最近我升级了我的gem,现在安装了0.3.7和0.4.0的i18n。 当然,Rails想要加载和使用导致我的项目出错的最新版本。 我尝试将gem版本设置为0.3.7,这可以解决Web应用程序中的错误。 但是,我们使用resque和resque_mailer来延迟发送消息。 当工作人员从队列中获取邮件程序作业时,它会忽略environment.rb中的config.gem要求并使用版本0.4.0。

理想情况下,我想告诉Rails根本不使用i18n gem。 我怎么做?

更新:从beta 4开始,Rails 3现在需要i18​​n版本0.4.1。 我不知道有多少人没有遇到这个问题,因为现在看来如果安装了Rails 2和Rails 3,你就会遇到这个问题。

我按照这里定义的说明操作:

http://gembundler.com/rails23.html

它工作。

您可以使用Bundler或RVM的Gemsets在您的应用程序中使i18n gem不可用。 或者你可以升级你的Rails应用程序。

  1. 冻结铁轨版本: rake VERSION=2.3.5 rails:freeze:gems
  2. 将文件vendor / rails / activesupport / lib / active_support / vendor.rb第24行中的版本修复为:gem’i18n 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'