Как исправить эту проблему с зависимостью от gem в Rails 3 (bundler)?

По какой-то причине мой проект испортился, и теперь он выдает ошибки каждый раз, когда я пытаюсь запустить bundle install. Некоторые ошибки мне удалось исправить, переупорядочив драгоценные камни в моем Gemfile, но теперь я получаю эту:

Bundler could not find compatible versions for gem "faraday":
  In Gemfile:
    omniauth depends on
      faraday (~> 0.7.3)

    twitter depends on
      faraday (0.6.1)

Я думал, что использование упаковщика должно было стереть зависимость wtf's? Я предполагаю, что это сообщение означает, что двум драгоценным камням нужны 2 разные версии faraday..?

Как я могу исправить эту проблему? Почему бы просто не установить обе версии, и каждый гем не загружает нужную версию?

Я хотел бы помочь в этом, пожалуйста!

Спасибо

Gemfile.lock: https://gist.github.com/1061722

Gemfile:

# Edit this Gemfile to bundle your application's dependencies.
source 'http://rubygems.org'
gem 'rails', '3.0.9' #, :git => 'git://github.com/rails/rails.git'
gem "haml-rails"
gem "jquery-rails"

# Gem to abstract away the dplication common in standard restful controllers
gem 'inherited_resources'

# Allows us to keep an order of a user's items in their collection
gem "acts_as_list"

# Used to simplify user registrations and logins
# Pined to ref, as there is problem on devise HEAD
gem "devise", :git => "git://github.com/plataformatec/devise.git", :ref => '4964f53a42a3d434ee6d731d6f999d8dae13dada'

# Might not be used
gem "ajaxful_rating"



# Facilitates Edit-in-place functionality for certain data fields
gem "best_in_place", :git => 'git://github.com/moabite/best_in_place.git'


# Gem for uploading images.  More flexible than "paperclip"
gem "carrierwave", :git => 'git://github.com/jnicklas/carrierwave.git'
gem "fog"

# Apparently needed to make the uploadify multifile uploader work 
gem "flash_cookie_session"

# Used to that we can resize images uploaded through carrierwave, using
# ImageMagick
gem "rmagick"

# Easily create database models for site simulation
gem "factory_girl_rails"

# Useful for fake data generation
gem "faker"
gem "randexp"
gem "random_data"
gem 'forgery'
gem "lorempixum", :require => 'lorempixum'

gem "hashie"
# gem 'aws-s3', :require => 'aws/s3'
# gem 'bcrypt-ruby', :require => 'bcrypt'

# Provides a shorter syntax for building forms
gem 'formtastic'

# Sends notifications of errors on Production app
gem "hoptoad_notifier"

# Social Media Gems FB Connect, FB, and Twitter
gem "omniauth", :git => "git://github.com/intridea/omniauth.git" ,:ref => "b9fe79961ab56041dbf9"
gem "fb_graph"
gem "twitter"

gem 'rake', '0.8.7'

gem "jammit"

gem "rest-client"
gem 'rails-erd', :git => "git://github.com/voormedia/rails-erd.git"
gem "nokogiri"

group :development, :test do
  gem "guard"
  gem "guard-ego"
  gem "guard-bundler"
  gem "guard-jammit"
  gem "guard-rails"
  gem "guard-rspec"
  gem "guard-shell"
  gem "guard-compass"
  gem "guard-livereload"
  gem 'rb-fsevent', :require => false 
  gem "rb-inotify", :require => false
  gem "libnotify", :require => false

  # Needed to run html2haml to convert html to haml
  gem "hpricot"

  gem "taps"

  gem "heroku"

  #gem "heroku-rails", :git => "git://github.com/railsjedi/heroku-rails.git"
  gem "heroku-rails", :git => "git://github.com/sid137/heroku-rails.git"

  gem "sqlite3-ruby", :require => 'sqlite3'
  gem "ruby-debug19", :require => 'ruby-debug'

  # nice table displays in Rails console
  gem "hirb"

  gem "facebook_test_users", :git => "git://github.com/sid137/facebook_test_users.git"

  # Allows us to push the local development database up to Heroku, and pull the
  # heroku db down locally
  gem "yaml_db"

  gem "escape_utils"

  # Sass and Blueprint based css framework for dev machine
  # use "compass compile . " to compile css before deployment
  gem "compass", ">=0.11.1"

  # Print a header in app/model/*.rb files, listing the db columns present for
  # each model


  gem "selenium-webdriver"
  gem "rack-test"
  gem "capybara", :require => 'capybara/rspec'
  gem "launchy"
  gem 'database_cleaner', :git => 'git://github.com/bmabey/database_cleaner.git'

  gem "rspec-core", "2.6.4"
  gem "rspec-rails"# , '2.6.0' #, '2.5.0'
  #gem 'shoulda-matchers', :git => 'git://github.com/thoughtbot/shoulda-matchers.git'
  #gem 'shoulda-matchers', :git => 'git://github.com/sid137/shoulda-matchers.git'
  gem "ZenTest"
  gem "autotest-rails"
end

person noli    schedule 02.07.2011    source источник
comment
Вы пытались удалить файл Gemfile.lock?   -  person pthesis    schedule 03.07.2011
comment
Я попытался удалить Gemfile.lock, я попробовал rm -rf vendor/bundle, для другой проблемы я даже попытался откатить два коммита в своем репозитории, но что-то, должно быть, осталось. Я серьезно запутался здесь   -  person noli    schedule 03.07.2011
comment
Я только что использовал ваш Gemfile в новом проекте, и он работал нормально. :/   -  person Dex    schedule 03.07.2011
comment
ок.. так что еще один wtf тогда.. =/ я не знаю..   -  person noli    schedule 03.07.2011
comment
У вас также могут быть установлены две версии. Вы можете сделать gem list, чтобы увидеть. Затем вы можете gem uninstall faraday, и он спросит вас, какую версию вы хотите удалить.   -  person Dex    schedule 03.07.2011
comment
ах... это могло быть частью этого! У меня был фарадей 0.6.1. установлен глобально, а более поздняя версия установлена ​​локально. Может быть, это было частью этого. Я разобрал старую установку, поэтому нет возможности проверить, чтобы быть уверенным. Спасибо за вклад, хотя   -  person noli    schedule 03.07.2011


Ответы (3)


Конкретная версия Omniauth, которую вы используете, зависит от Faraday ~> 0.7.3, в то время как для последней выпущенной версии Twitter gem требуется версия 0.6.

Вы можете исправить это, используя последнюю версию драгоценного камня Twitter из репозитория.

gem 'twitter', :git => 'https://github.com/jnunemaker/twitter.git'
person Dogbert    schedule 02.07.2011
comment
Спасибо, я собираюсь попробовать это. Однако из вашего ответа ... означает ли это, что я снова столкнусь с этим, если у всех разработчиков драгоценных камней будут разные версии зависимостей? Могу ли я что-нибудь сделать лично, чтобы избежать этого, вместо того, чтобы надеяться, что разработчик драгоценных камней исправит это? - person noli; 03.07.2011
comment
@Noli, я не уверен, но я думаю, что вы ничего не можете сделать (кроме редактирования зависимостей драгоценных камней самостоятельно и надежды, что ничего не вылетит). Невозможно загрузить две отдельные версии одного драгоценного камня. - person Dogbert; 03.07.2011
comment
Хорошо, спасибо .. ваше решение сработало, и обновление моих версий rubygems и сборщика также исправило несколько других вещей. Спасибо! - person noli; 03.07.2011
comment
@Noli, если вы столкнетесь с этой проблемой в будущем, загляните в Ruby Version Manager (RVM). См. также эту ссылку на rvm< /а> - person Eric Hu; 03.07.2011
comment
@ Эрик Ху, как это поможет? Вы не можете загрузить 2 версии одного и того же гема в одно приложение одновременно. - person Dogbert; 03.07.2011
comment
Я мог бы поклясться, что где-то читал, что RVM установит две отдельные версии и создаст соответствующие ссылки, если у вас есть зависимость от разделенной версии одного и того же гема. У меня проблемы с поиском ссылки, поэтому пока не обращайте внимания на мой комментарий (позже я удалю свои комментарии, если не смогу) - person Eric Hu; 03.07.2011
comment
@ Эрик Ху, вы имели в виду RVM Gemsets? Вы, конечно, можете создавать песочницы с помощью Gemsets, но я не думаю, что можно дважды загрузить один и тот же гем в одном и том же приложении. - person Dogbert; 03.07.2011
comment
@Dogbert, да, я имел в виду драгоценные камни. У меня сложилось впечатление, что какой-то инструмент (будь то Bundler или RVM) допускает зависимость гема от разных версий одного и того же гема. Я только что провел еще 2 часа в поисках источника, который, как я думал, я прочитал, но я готов признать, что я просто должен быть сумасшедшим =P - person Eric Hu; 04.07.2011

У меня была точно такая же проблема, и она была решена следующими двумя строками в моем Gemfile:

gem 'twitter', :git => 'https://github.com/jnunemaker/twitter.git' 
gem 'omniauth', :git => "git://github.com/intridea/omniauth.git" ,:ref => "b9fe79961ab56041dbf9"
person Etienne    schedule 01.08.2011

попробуйте удалить свой Gemfile.lock (файл), а затем выполните

bundle install
person Magesh    schedule 30.09.2011