【发布时间】:2014-10-30 20:11:33
【问题描述】:
我需要在我的 Rails 3.2 应用程序中使用这两个 gem:
gem 'google-adwords-api'
gem 'netsuite'
但是,它们在 savon gem 的版本上存在冲突。 Bundler 吐出这个:
Bundler could not find compatible versions for gem "savon":
In Gemfile:
google-adwords-api (>= 0) ruby depends on
google-ads-common (~> 0.2.0) ruby depends on
savon (~> 0.9.1) ruby
netsuite (= 0.2.6) ruby depends on
savon (2.3.3)
我的项目中绝对需要这两种宝石,所以这是我迄今为止尝试过的。我已将 google-adwords-api gem 移动到我命名为“adx_interface”的自定义 Rails 引擎中,并将其安装在我的 Rails 应用程序中。这个引擎有它自己的 Gemfile。如果我将此行放在我的 Rails 应用程序的 Gemfile 中,那么 Bundler 错误仍然存在:
gem "adx_interface", "0.0.1", :path => "#{File.expand_path(__FILE__)}/../vendor/adx_interface"
有没有办法给这个引擎命名,这样它的依赖关系就不会与应用程序依赖关系发生冲突?我尝试从应用程序 Gemfile 中排除 gem "adx_interface" 行,但这意味着我必须开始手动要求 gems 而不是依赖 Bundler。这是一个可行的解决方案吗?如果是这样,我该如何包含 google-adwords-api 以使其命名空间正确且 savon 不会与 netsuite 的 savon 冲突?
对于它的价值,我亲自联系了 google-adwords-api gem 的作者。他说他喜欢 savon 0.9.1 gem 并且没有更新到更新版本的计划。
【问题讨论】:
标签: ruby-on-rails ruby bundler