2012-01-16 55 views
1

我有旧的Rails应用程序。而这个应用程序需要不同版本的相同的宝石。Rails Bundle - 一个宝石版本

例如,使用现在

宝石 '的ActionMailer' 2.3.5和 '的ActionMailer' 2.3.2 宝石 'ActionPack的', '2.3.5' 和 'ActionPack的', '2.3.2'

不要问我为什么=)这是旧的应用程序,非常庞大。电流轨版本2.3.5

现在我尝试使用捆绑器为我的宝石控制。但Bundler不允许在配置中使用一个gem两次。或者,我可以看到错误是这样的:

捆扎机无法找到宝石 “ActionPack的” 兼容的版本:在 的Gemfile: datanoise-actionwebservice(= 2.3.2)红宝石取决于 ActionPack的(= 2.3.2 )红宝石

rails (= 2.3.5) ruby depends on 
    actionpack (2.3.5) 

所以,我可以解决这个问题,或者没有,我不能老是用捆扎机?

回答

1

datanoise-actionwebservice似乎对gemspec中的actionpack和activerecord版本非常(可能太)限制。不过我在内部看到它试图用'> = 2.3.0'版本加载这些gem(参见lib/action_web_service.rb)。

我建议尝试分叉这个gem并修补它的gemspec,所以actionpack和activerecord的版本要求改为'> = 2.3.2'。

然后更新您的项目的Gemfile中使用补丁版本:

gem 'datanoise-actionwebservice', :git => "http://github.com/youraccount/actionwebservice.git" 

希望它会与2.3.5正常工作。

+0

谢谢!!这是个好主意! – 2012-01-17 07:25:37

1

不,您必须将您的datanoise-actionwebservice升级到版本2.3.5,或将您的rails降级到2.3.2。

如果可能,我建议升级datanoise-actionwebservice

+0

太糟糕:(没有'datanoise-actionwebservice'版本2.3.5。降级我的应用程序2.3.2对我也不好。所以...我想...没有更多的选择? – 2012-01-16 14:01:55

+0

这是不可能的:(版本为2.3.5不存在 – 2012-01-18 07:53:43