2012-01-16 77 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