让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现在需要i18n版本0.4.1。 我不知道有多少人没有遇到这个问题,因为现在看来如果安装了Rails 2和Rails 3,你就会遇到这个问题。
您可以使用Bundler或RVM的Gemsets在您的应用程序中使i18n gem不可用。 或者你可以升级你的Rails应用程序。
- 冻结铁轨版本:
rake VERSION=2.3.5 rails:freeze:gems
- 将文件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'