Bundler: вы пытаетесь установить в режиме развертывания после изменения вашего Gemfile

Я довольно новичок в связке и капистрано, и я пытаюсь использовать их вместе. Когда я пытаюсь выполнить развертывание, я получаю сообщение:

  

Вы пытаетесь установить в режиме развертывания после изменения вашего Gemfile. Запустите `bundle install 'в другом месте и добавьте обновленный Gemfile.lock в систему управления версиями.

Я не знаю, как удовлетворить систему, которая подает жалобу, и я не понимаю, почему жалоба поступает, потому что я прочитал в документ :

  

Если Gemfile.lock существует, и вы обновили свой Gemfile (5),   bundler будет использовать зависимости в Gemfile.lock для всех гемов   что вы не обновили, но заново разрешите зависимости гемов   что вы сделали обновление. Вы можете найти больше информации об этом обновлении   Процесс ниже в разделе КОНСЕРВАТИВНОЕ ОБНОВЛЕНИЕ.

Я понимаю, что это означает, что Bundler может справиться с тем фактом, что мой Gemfile не соответствует ожиданиям. Любая помощь?

Характеристики: Ruby 1.9.3, Rails 3.2.3, Capistrano 2.12.0, Bundler 1.1.4, Windows 7, развертывание на машине Posix.

Изменить. Мой Gemfile включает в себя логические блоки, подобные следующим:

unless RbConfig::CONFIG['host_os'] === 'mingw32'
  # gem 'a' ...
end
75 голосов | спросил JellicleCat 17 J000000Tuesday12 2012, 02:39:05

16 ответов


0

Сообщение об ошибке, касающееся Gemfile.lock, может быть связано с тем, что ваш Gemfile и Gemfile.lock не согласны друг с другом. Похоже, вы что-то изменили в своем Gemfile с момента последнего запуска bundle install (или update). Когда вы bundle install, он обновляет ваш Gemfile.lock с любыми изменениями, внесенными вами в Gemfile.

Убедитесь, что вы запускаете bundle install локально, и регистрируетесь, чтобы контролировать исходное состояние недавно обновленного Gemfile.lock после этого. Затем попробуйте выполнить развертывание.

Изменить . Как было признано в комментариях, условие в Gemfile привело к созданию допустимого Gemfile.lock на одной платформе, недопустимого на другой. Предоставление флага : platform для этих зависящих от платформы драгоценных камней в Gemfile должен решить асимметрию.

ответил Edd Morgan 17 J000000Tuesday12 2012, 03:04:57
0

vi .bundle /config

измените параметр BUNDLE_FROZEN с '1' на '0'

сделайте "комплектную установку"


ИЛИ

запустите "комплект конфигурации"

посмотрите, является ли "замороженное" значение истинным, установите для него значение false

конфигурация пакета заморожена false

ответил Gaurav24 23 Maypm15 2015, 15:00:29
0

Не упустите глобальную конфигурацию Bundler.

У меня была глобальная конфигурация в моей среде разработчика в ~/.bundle/config, которой у меня не было в моей среде CI /Production, что вызвало ---- +: = 1 =: + ----, созданный в моей среде разработки, будет отличаться от кода в моей среде CI /Production.

В моем случае я установил для Gemfile.lock значение true в моей среде dev, но в моей среде CI /Production такой конфигурации не было. Это привело к тому, что два файла github.https были разными.

ответил Joshua Pinter 13 72016vEurope/Moscow11bEurope/MoscowSun, 13 Nov 2016 00:46:45 +0300 2016, 00:46:45
0

Когда вы видите следующее ...

$ bundle install
You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.

If this is a development machine, remove the Gemfile freeze
by running `bundle install --no-deployment`.

You have added to the Gemfile:
* source: rubygems repository https://rubygems.org/
* rails (~> 3.2)
. . .

... Тогда проблема, скорее всего, в том, что у вас есть устаревшие файлы .gem в каталоге vendor /cache.

Возможно, вы ранее запускали $bundle install --deployment, который помещал некоторые «устаревшие» файлы .gem в кеш?

В любом случае вы можете обойти эту ошибку, выполнив: bundle install --no-deployment

Это одна из многих замечательных особенностей Rails ... сообщения об ошибках часто говорят вам, что именно нужно сделать, чтобы решить проблему.

ответил l3x 25 Mayam13 2013, 02:17:16
0

Решение для меня немного отличалось от других, перечисленных здесь. Я пытался перейти с sidekiq на sidekiq-pro (для этого требуется пакет 1.7.12+), но я получал сообщение «Вы пытаетесь установить в режиме развертывания после изменения вашего Gemfile» из travis-ci

Проверка вывода консоли travis-ci показала, что использовалась более старая версия компоновщика.

В моем случае мне пришлось отредактировать файл travis.yml, добавив:

before_install: - gem update bundler

Это заставило travis-ci использовать последнюю версию пакета и заставило сообщение об ошибке исчезнуть.

ответил dacoinminster 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 25 Sep 2015 22:02:42 +0300 2015, 22:02:42
0

Моя конкретная проблема была связана с тем, что @JoshPinter сообщило о несоответствиях хоста dev-vs-deploy в протоколе, используемом компоновщиком для получения драгоценных камней из github.

Короче говоря, все, что мне нужно было, это изменить следующую Gemfile entry ...

gem 'activeadmin', github: 'activeadmin'

... к этому безопасному синтаксису ( см. ссылку ):

gem 'activeadmin', git: 'https://github.com/activeadmin/activeadmin.git'

И мои развертывания вернулись к нормальной жизни.

ответил Giuseppe 22 ThuEurope/Moscow2016-12-22T11:39:22+03:00Europe/Moscow12bEurope/MoscowThu, 22 Dec 2016 11:39:22 +0300 2016, 11:39:22
0
rm -fr .bundle

Исправил проблему для меня.

ответил Aneil Mallavarapu 26 +03002016-10-26T00:33:33+03:00312016bEurope/MoscowWed, 26 Oct 2016 00:33:33 +0300 2016, 00:33:33
0

Я столкнулся с чем-то похожим раньше. Думаю, что один из способов исправить это, но может занять больше места на вашем сервере, чем запустить

bundle install --deployment 

, а затем попробуйте развернуть. Это делает что-то вроде установки всех ваших драгоценных камней в папку vendor, чего, как я считаю, в общем случае лучше избегать ... но все же, вероятно, будет работать. Раньше мое приложение вело себя так, мое решение заключалось в удалении точных версий для загрузки из моего Gemfile, а затем повторном подборе и развертывании.

gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git', :branch => 'master'

к

gem 'rails_admin'

Или вы можете сделать то, что он предлагает, и перенести свой проект с рабочего сервера на локальный компьютер, связать его, а затем снова установить на свой сервер. Это решение может быть не на 100% правильным, но некоторые из них сработали для меня ... просто думал, что поделюсь. Гудлак

ответил MoB 17 J000000Tuesday12 2012, 02:52:36
0

Еще одна причина ошибки:

Это немного глупо, но я уверен, что кто-то другой совершит ту же ошибку.

Для Rails 4 Heroku добавил гем rails_12factor. Если вы использовали его до того, как его добавили, у вас будут эти два драгоценных камня:

gem 'rails_log_stdout',  github: 'heroku/rails_log_stdout'
gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'

Вы должны удалить их, когда добавите новый. (они включены). Я думаю, что вы можете избежать неприятностей, пока не коснетесь их строк в файле gem, тогда Heroku замечает дублирование и выкрикивает ошибку, описанную выше.

удачи в Rails 4.

ответил bobbdelsol 25 AM00000050000001631 2013, 05:04:16
0

В нашем случае мы использовали функцию, которой не было в старой версии пакета, которая работала на нашей рабочей машине. Поэтому было достаточно обновить упаковщик, то есть сделать gem update bundler.

ответил nerdinand 26 J0000006Europe/Moscow 2015, 11:41:46
0

Это может быть опасной идеей, но если абсолютно необходимо что-то протестировать в среде промышленного развертывания, вы можете отредактировать файл .bundle /config

# This value is normally '1' 
# Set it to '0'
BUNDLE_FROZEN: '0'

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

RAILS_ENV=production bundle update <whatever gem>

Вероятно, вам следует изменить его после обновления, чтобы потом все работало так, как вы ожидаете. Опять же, это, вероятно, не поддерживается, и YMMV

ответил Chewbarkla 8 FebruaryEurope/MoscowbWed, 08 Feb 2017 21:38:02 +0300000000pmWed, 08 Feb 2017 21:38:02 +030017 2017, 21:38:02
0

Я столкнулся с подобной проблемой, однако я сделал и bundle install и bundle update и Heroku по-прежнему отклонили мой толчок.

Я исправил проблему, просто удалив Gemfile.lock и затем снова запустил bundle install. Затем я добавил, совершил и отправил это в мое git-репо. После этого я без проблем подтолкнул Героку.

ответил ryanSrich 14 Jpm1000000pmTue, 14 Jan 2014 19:20:23 +040014 2014, 19:20:23
0

для heroku, вам не нужно менять синтаксис в Gemfile. Вы можете просто добавить BUNDLE_GITHUB__HTTPS (обратите внимание на двойное подчеркивание) в качестве переменной среды и установить для нее значение true (на панели инструментов приложения heroku на вкладке Settings в Config Vars). это переключит протокол с git:// на https:// для всех таких запросов.

ответил clairity 24 SatEurope/Moscow2016-12-24T08:31:53+03:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2016 08:31:53 +0300 2016, 08:31:53
0

У меня было сообщение об ошибке при попытке нажать на Heroku. Я нашел следующее решение исправлено.

  1. Мастер создания Git Pull
  2. Git status
  3. Git commit
  4. Git push origin master
  5. Git push heroku master
ответил Ben Strachan 13 J000000Thursday17 2017, 03:48:48
0

Эта проблема может быть связана с подмодулями, указывающими на старые версии кода. Для меня я решил эту проблему, обновив свои подмодули

Если у вас есть подмодули, попробуйте запустить:

git submodule update --init

bundle install

ответил Gerard Simpson 12 J000000Thursday18 2018, 09:13:34
0

После этой команды вы можете снова выполнить обычную установку пакета:

bundle install --no-deployment
ответил ServerElf 12 WedEurope/Moscow2018-12-12T02:35:12+03:00Europe/Moscow12bEurope/MoscowWed, 12 Dec 2018 02:35:12 +0300 2018, 02:35:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132