2010-06-04 67 views
10

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

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

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

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

回答

5

我跟着这里定义的指令:

http://gembundler.com/rails23.html

和它的工作。

+0

Upvote for bundler。自从我发布这个版本后,bundler已经升级到了1.0版本,并且变得更好了。在Rails 2.3和Rails 3项目中设置都非常简单。这是我前进的解决方案。 – Jared 2010-09-01 15:37:40

+0

谢谢......真的是一个gud soln解决了我的问题。 – 2011-05-30 04:22:59

3

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

+0

虽然这是一个有效的答案,但它不是我正在寻找的那种答案。我已经在使用RVM,但很多人不是。如果Rails将成为Rails的一个特性,那么应该有一种方法可以在Rails中完全处理它。您不必安装和设置RVM来管理Rails本身的功能。 – Jared 2010-06-07 16:50:48

+1

这可能来自Rails 3中的“内部”,因为它随Bundler提供。 RubyGems无法完全禁用Gem。虽然你可以明确地激活一个老版本的i18n,但只有这样才能将它从你的加载路径中解脱出来,根本不会使用rubygems。 – 2010-06-07 17:16:52

+1

您也可以转换旧的rails项目以使用gem bundler。宝石捆绑器有能力禁用系统宝石,只依赖捆绑中的宝石。 它也具有远优于依赖管理。 安装时间:15分钟 – 2010-06-11 22:02:03

2
  1. 冻结轨道版本:rake VERSION=2.3.5 rails:freeze:gems
  2. 修复在文件供应商的版本/导轨/的ActiveSupport/lib中/ active_support/vendor.rb线24:gem 'i18n', '>= 0.1.3', '< 0.4.0'
+0

错误已解决,因此解冻并更新导轨。 宝石更新;耙路轨:解冻 – wingfire 2011-02-01 15:04:56

2

或者只是编辑:/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'