2013-06-18 2 views
4

я получаю две разные результаты при использовании двух команд bundle и bundle updateВ чем разница между обновлением пакета и пакета?

Если я использую bundle update, я получаю следующее сообщение об ошибке:

Resolving dependencies... 
Bundler could not find compatible versions for gem "railties": 
    In Gemfile: 
    requirejs-rails (>= 0) ruby depends on 
     railties (~> 3.1.1) ruby 

    rails (= 4.0.0.rc2) ruby depends on 
     railties (4.0.0.rc2) 

Bundler could not find compatible versions for gem "rails": 
    In Gemfile: 
    requirejs-rails (>= 0) ruby depends on 
     rails (~> 3.1.1) ruby 

    rails (4.0.0.rc2) 

Но если я использую только bundle, я получаю следующее:

Resolving dependencies... 
Bundler could not find compatible versions for gem "activesupport": 
    In snapshot (Gemfile.lock): 
    activesupport (3.2.2) 

    In Gemfile: 
    rails (= 4.0.0.rc2) ruby depends on 
     activesupport (= 4.0.0.rc2) ruby 

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

Ошибки указывают на две различные проблемы зависимости, но обе команды: fetching gem metadata from https://rubygems.org/... и Resolving dependencies..., так как они разные?

Я всегда использовал только bundle, но попытался bundle update и заметил разницу.

ответ

9

In a nutshell: bundle install handles changes to the Gemfile and bundle update upgrades gems that are already managed by Bundler.

http://viget.com/extend/bundler-best-practices

Излишне говорить, что bundle и bundle install одни и те же команды, install параметр по умолчанию для bundle.

5

bundle такая же, как bundle install, который выполняет следующие действия:

  • Проверить, если Gemfile.lock существует. Если это так, установите все драгоценные камни с точными версиями, указанными там.
  • Если замок не существует, установите драгоценные камни, как указано в Gemfile, используя последние доступные/допустимые версии в соответствии с Gemfile. Затем создайте Gemfile.lock, чтобы записать, какие версии были установлены.

bundle update с другой стороны, удаляет/проигнорирует Gemfile.lock и идет прямо к шагу два.

Ошибка вы видите, вероятно, потому, что некоторые драгоценный камень хочет active_support быть в диапазоне 3.x.x версии, в то время как вы, кажется, пытаются перейти на Rails 4.

Смежные вопросы