Gem依赖冲突

3
我遇到了一个与一年前发布的问题相似的问题。 如何在Rails 3(Bundler)中解决gem依赖性问题? 我是ROR的新手,当我尝试在应用程序上运行bundle install时,收到以下错误信息: Could not find twitter-2.5.0 in any of the sources 我尝试删除Gemfile.lock文件,然后再次运行bundle install,但输出结果如下:
Bundler could not find compatible versions for gem "faraday":
  In Gemfile:
    twitter (>= 0) ruby depends on
      faraday (~> 0.8) ruby

    omniauth (~> 0.3.2) ruby depends on
      faraday (0.7.3)

gem list的结果:

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.19, 3.0.10)
actionpack (3.0.19, 3.0.10)
activemodel (3.0.19, 3.0.10)
activerecord (3.0.19, 3.0.10)
activeresource (3.0.19, 3.0.10)
activesupport (3.0.19, 3.0.10)
addressable (2.3.3, 2.2.8)
arel (2.0.10)
bcrypt-ruby (3.0.1)
bitly (0.8.0)
bson (1.6.4)
bson_ext (1.6.2)
builder (2.1.2)
bundler (1.2.3)
capybara (1.1.2)
carrierwave (0.5.8)
carrierwave-mongoid (0.1.7)
chef (11.2.0)
childprocess (0.3.5)
crack (0.3.1)
devise (1.5.3)
diff-lcs (1.1.3)
erubis (2.6.6)
excon (0.16.1)
factory_girl (4.0.0)
factory_girl_rails (4.0.0)
faraday (0.8.5)
ffi (1.1.5)
fog (1.5.0)
formatador (0.2.3)
formtastic (1.2.4)
gibbon (0.3.5)
growl (1.0.3)
guard (1.3.2)
guard-rspec (1.2.1)
guard-spork (1.1.0)
haml (3.1.7)
haml-rails (0.3.4)
hashie (1.2.0)
highline (1.6.15)
httparty (0.8.3)
httpauth (0.2.0)
i18n (0.5.0)
ipaddress (0.8.0)
jquery-rails (1.0.19)
json (1.7.6)
jwt (0.1.5)
koala (1.6.0, 1.4.0)
libwebsocket (0.1.5)
linkedin (0.3.7)
listen (0.4.7)
log4r (1.1.10)
macaddr (1.6.1)
mail (2.2.19)
mime-types (1.21, 1.19)
mini_magick (3.4)
mixlib-authentication (1.3.0)
mixlib-cli (1.3.0)
mixlib-config (1.1.2)
mixlib-log (1.4.1)
mixlib-shellout (1.1.0)
mongo (1.6.2)
mongoid (2.2.6)
mongoid_slug (0.10.0)
mongoid_taggable (0.1.7)
multi_json (1.6.1, 1.0.4)
multi_xml (0.5.3, 0.4.4)
multipart-post (1.1.5)
net-ldap (0.2.2)
net-scp (1.0.4)
net-ssh (2.6.5, 2.5.2)
net-ssh-gateway (1.2.0)
net-ssh-multi (1.1)
nokogiri (1.5.6, 1.5.5)
oa-basic (0.3.2)
oa-core (0.3.2)
oa-enterprise (0.3.2)
oa-more (0.3.2)
oa-oauth (0.3.2)
oa-openid (0.3.2)
oauth (0.4.7, 0.4.6)
ohai (6.16.0)
omniauth (1.1.3, 0.3.2)
omniauth-facebook (1.4.1)
omniauth-oauth2 (1.1.1)
orm_adapter (0.0.7)
polyglot (0.3.3)
pyu-ruby-sasl (0.0.3.3)
rack (1.2.8, 1.2.6, 1.2.3)
rack-mount (0.6.14)
rack-openid (1.3.1)
rack-test (0.5.7)
rails (3.0.19, 3.0.10)
rails_config (0.3.1)
railties (3.0.19, 3.0.10)
rake (10.0.3, 0.9.2)
rb-fchange (0.0.5)
rb-fsevent (0.9.1)
rb-inotify (0.8.8)
rdiscount (1.6.8)
rdoc (3.12.1, 3.12)
remarkable (4.0.0.alpha4)
remarkable_activemodel (4.0.0.alpha4)
remarkable_mongoid (0.6.0)
rest-client (1.6.7)
rspec (2.11.0)
rspec-core (2.11.1)
rspec-expectations (2.11.2)
rspec-mocks (2.11.2)
rspec-rails (2.11.0)
ruby-hmac (0.4.0)
ruby-openid (2.2.0)
ruby-openid-apps-discovery (1.2.0)
rubygems-bundler (1.1.0)
rubyntlm (0.1.1)
rubyzip (0.9.9)
rvm (1.11.3.6)
sass (3.2.1)
selenium-webdriver (2.25.0)
simple-navigation (3.8.0)
simple_oauth (0.2.0)
soloist (0.9.7)
spork (0.9.2)
sqlite3 (1.3.7)
sqlite3-ruby (1.3.3)
stringex (1.4.0)
subexec (0.2.2)
systemu (2.5.2)
thor (0.14.6)
treetop (1.4.12)
twitter (4.5.0)
tzinfo (0.3.35, 0.3.29)
uuid (2.3.5)
warden (1.2.1) 
will_paginate (2.3.16)
XMLCanonicalizer (1.0.1)
xpath (0.1.4)
yajl-ruby (1.1.0)

Gemfile:

source 'http://rubygems.org'

gem 'rails', '~> 3.0.19'

#gem 'sqlite3-ruby', :require => 'sqlite3'
gem "haml-rails"
gem "sass"
gem "mongoid"
gem "mongo", "1.6.2"
gem "bson_ext", "1.6.2"
gem 'formtastic', '~> 1.2'
gem 'devise', '~> 1.4'
gem "declarative_authorization", :git => 'git://github.com/opusmagnum/declarative_authorization.git'
gem 'mongoid_taggable'
gem 'rdiscount'
gem "simple-navigation", "~> 3.6"
gem "will_paginate", "~> 2.3.16"
gem 'mongoid_slug', :require => 'mongoid/slug'
gem "omniauth", "~> 0.3.2"
gem "twitter" 
gem "koala"
gem "bitly"
gem "linkedin"
gem "rails_config"
gem 'gibbon', '~> 0.1'
gem 's3_swf_upload', :git => 'git://github.com/nathancolgate/s3-swf-upload-plugin'
gem 'carrierwave'
gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'fog'
gem "mini_magick", "~> 3.3"
gem "jquery-rails"

group :test, :development do
  gem "factory_girl_rails"
  gem 'rspec-rails'
  gem 'capybara'
  gem 'remarkable_mongoid'
  gem 'spork'
  gem 'guard'
  gem 'guard-rspec'
  gem 'guard-spork'
  gem 'rb-fsevent'
  gem 'growl'
end

我也尝试了将gem 'twitter', :git => 'https://github.com/sferik/twitter.git'添加到我的gemfile中,但是仍然没有成功。

任何帮助都将不胜感激。谢谢。


你能否发布一下运行 gem list 的结果? - Fishz
你使用 omniauth 的 0.3.2 版本有什么原因吗? - crftr
twitter gem 版本 2.5.0 最近已被撤下。https://rubygems.org/gems/twitter/versions/2.5.0 这有任何意义吗? - grzuy
我应该注意到这是之前开发者的应用程序。我现在被分配了一些更改任务。所以,我无法告诉您为什么它正在使用 0.3.2 版本的 omniauth。 - rsnyder
2个回答

2

这个答案来得很晚,但是你不小心升级了 Twitter gem,而这个 gem 已经被撤下了,可以在这里的评论中看到 Gruzy 的笔记。

只需要指定另一个仓库,并使用对你没有问题且与 Faraday 不冲突的标签即可。对我来说,这是:

gem 'twitter', :git => 'https://github.com/sferik/twitter.git', :tag => 'v2.2.0'

您只需要将v2.2.0替换为v2.5.0,就可以解决故障问题。

2
您的Gemfile中的一些宝石被锁定在特定版本上。这可能在进行更新时会产生问题,并且当您删除Gemfile.lock文件时,未锁定版本的所有内容都可以使用最新的可能版本。通常情况下,我不认为删除锁定文件是一个好的做法。
相反,您应该运行bundle update gemfile_name来更新特定的宝石。运行bundle update将尝试将所有宝石更新为版本约束允许的最新版本。
如果您查看Gemfile.lock文件(与gem list不同),您将看到宝石、它们的版本以及其依赖项。
基于此,您应该能够找出将faraday作为依赖项加载,并尝试放宽版本约束。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接