2012-06-21 3 views
0

Я прочитал, что при выполнении bundle install в командной строке внутри проекта Rails из Gemfile.lock загружаются драгоценные камни (зависимости).Gemfile.lock не переопределяет Gemfile

Однако при запуске bundle update зависимости загружаются из Gemfile, поэтому обновление значений производится в Gemfile.lock.

Так что я Gemfile содержащий:

гем "AIRBRAKE",: мерзавец => "https://github.com/mico12/airbrake.git"

и Gemfile .lock содержащий:

ГИТ удаленный: мерзавец: //github.com/airbrake/airbrake.git
редакция: 15444189dfce4916ff35f326f6c34b8dce9b933d
спецификации:

airbrake (3.0.9) 
    activesupport 
    builder 

Почему, когда я исполняю bundle install, я получаю следующее:

Получение https://github.com/mico12/airbrake.git *

вместо этого (я ожидал):

Получение https://github.com/airbrake/airbrake.git *

кажется, что зависимости загружаются из Gemfile в любом случае, хотя я ожидал, что хранилище пользователя «AIRBRAKE», чтобы указать.

Отношения между Gemfile и Gemfile.lock для меня не очень понятны.

+1

Это хорошее сообщение: http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/ –

+0

Я только что прочитал его, прежде чем задавать свой вопрос :) – Mik378

ответ

1

Вы задаете зависимости в Gemfile. Когда вы запускаете bundle install или bundle update, bundler устанавливает драгоценные камни, указанные в Gemfile, и записывает дерево зависимостей замороженных (блокировок) в Gemfile.lock.

Когда приложение запущено, Rails смотрит в Gemfile.lock и загружает все драгоценные камни.

На вашем примере, так как вы задаете вилку mico12 «s из тормозных щитков, bundle install или bundle update следует извлечь из https://github.com/mico12/airbrake.git. После этого это также должно быть в файле Gemfile.lock.

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