有没有一种方法可以强制捆绑器接受特定版本的gem?

时间:2019-06-11 23:33:38

标签: ruby bundler

我有一个Rails项目,其中某些第三方依赖项坚持使用另一个第三方库的某个版本(使用〜>),当我尝试进行捆绑安装时,得到以下信息:

Bundler could not find compatible versions for gem "faraday":
  In snapshot (Gemfile.lock):
    faraday (= 0.9.2)

  In Gemfile:
    linkedin-v2 (>= 0.1.7) was resolved to 0.1.7, which depends on
      faraday (~> 0.11)

    twitter (~> 5.0) was resolved to 5.17.0, which depends on
      faraday (~> 0.9.0)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

Gemfile中的适用句段:

...
gem 'linkedin-v2', '>= 0.1.7'
...
gem 'twitter', '~> 5.0'
...

在这种情况下,我几乎可以确定第三方库中不存在不兼容性,并且经过测试,我可以毫无问题地使用faraday 0.11。我可以在Gemfile中使用某个指令来告诉捆绑程序仅接受某个版本的gem,也许是在打印警告时吗?

我可以在github上分叉第三方项目(在本例中为“ twitter”项目),然后在其Gemfile中更改faraday的版本号,然后在我的Gemfile中引用此分叉的项目-但这似乎确实丑陋且过于复杂的骇客。 (即:它引入了使分叉项目保持最新的问题。)

0 个答案:

没有答案