Bundler: вы пытаетесь установить в режиме развертывания после изменения вашего Gemfile
Я довольно новичок в bundler и capistrano, и я пытаюсь использовать их вместе. Когда я пытаюсь развернуть, я получаю сообщение:
вы пытаетесь установить в режиме развертывания после изменения вашего Gemfile. Запустите "bundle install" в другом месте и добавьте обновленный Gemfile.блокировка для контроля версий.
Я не знаю, как удовлетворить систему, которая жалуется, и я не понимаю, почему жалоба приходит, потому что я читаю в в док:
Если Gemfile.блокировка существует, и вы обновили свой Gemfile(5),
bundler будет использовать зависимости в Gemfile.замок для всех драгоценных камней
то, что вы не обновили, но повторно разрешите зависимости драгоценных камней
что вы сделали обновление. Вы можете найти дополнительную информацию об этом обновлении
процесс ниже при консервативном обновлении.
я интерпретирую это так, что Bundler может справиться с тем, что мой Gemfile не является тем, что он ожидал. Какая-нибудь помощь?
спецификации: Ruby 1.9.3, Rails 3.2.3, Capistrano 2.12.0, Bundler 1.1.4, Windows 7, развертывание на машине Posix.
Edit: мой Gemfile включает в себя логические блоки, такие как:
unless RbConfig::CONFIG['host_os'] === 'mingw32'
# gem 'a' ...
end
16 ответов:
сообщение об ошибке, которое вы получаете относительно
Gemfile.lockможет быть потому, что вашGemfileиGemfile.lockне согласны друг с другом. Похоже, вы что-то изменили в своем Gemfile с момента последнего запускаbundle install(илиupdate). Когда тыbundle install, он обновляет ваш Gemfile.блокировка с любыми изменениями, которые вы внесли в Gemfile.убедитесь, что вы запустите
bundle installлокально, и регистрация в системе управления версиями вашего недавно обновленногоGemfile.lockпосле этого. Тогда попробуй развертывание.Edit: как признается в комментариях, условное условие в Gemfile привело к действительному Gemfile.блокировка на одной платформе, недействительна на другой. Предоставление :платформа флаг для этих платформ-зависимых драгоценных камней в Gemfile должен решить асимметрию.
vi .связка/конфигурации
измените параметр BUNDLE_FROZEN с '1'на ' 0'
do "bundle install"
или
запустить "bundle config"
смотрите, если" замороженное " значение true установите его в false
bundle config frozen false
следите за глобальной конфигурацией Bundler.
у меня была глобальная конфигурация в моей среде разработки в
~/.bundle/configчто у меня не было в моей CI / производственной среде, которая вызвалаGemfile.lockЭто было сгенерировано в моей среде разработки, чтобы отличаться от той, что в моей среде CI / Production.в моем случае я сидел
github.httpsк true в моей среде разработки, но не было такой конфигурации в моей среде CI / Production. Это вызвало дваGemfile.lockфайлы отличающийся.
когда вы видите следующее...
$ 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 в каталоге поставщика / кэша.
возможно, вы уже запускали
$bundle install --deploymentкоторый поставил некоторые "устаревшие".драгоценные файлы в кэше?В любом случае, вы можете обойти эту ошибку:
bundle install --no-deploymentЭто одна из многих замечательных вещей о рельсы... сообщения об ошибках часто говорят вам, что именно нужно сделать, чтобы исправить проблема.
решение для меня было немного отличается от других, перечисленных здесь. Я пытался обновить sidekiq до sidekiq-pro (который требует bundler 1.7.12+), но я продолжал получать сообщение "Вы пытаетесь установить в режиме развертывания после изменения вашего Gemfile" от travis-ci
проверка консольного вывода travis-ci показала, что используется более старая версия bundler.
в моем случае, мне пришлось изменить Тревис.yml файл в добавить:
before_install: - gem update bundlerэто заставило travis-ci использовать последнюю версию bundler и заставило сообщение об ошибке уйти.
моя конкретная проблема была связана с тем, что сообщил @JoshPinter, т. е. dev-vs-deploy host несоответствия в протоколе, используемом bundler для извлечения драгоценных камней из github.
чтобы сделать длинную историю короче, все, что мне нужно было изменить следующее
Gemfileзапись...gem 'activeadmin', github: 'activeadmin'...к этому защищенному синтаксису (см. ссылку):
gem 'activeadmin', git: 'https://github.com/activeadmin/activeadmin.git'и мои развертывания вернулись к нормальной жизни.
я столкнулся с чем-то подобным раньше. Один из способов исправить это, я думаю, но может занять больше места на вашем сервере, чем вы хотите, это запустить
bundle install --deploymentа затем попробуйте развернуть. Это делает что-то вроде установки всех ваших драгоценных камней в папку поставщика, которую, как я считаю, обычно хорошо избегать... но все равно, вероятно, будет работать. Раньше мое приложение вело себя так, мое решение удаляло точные версии для загрузки из моего Gemfile, а затем перезагружалось и развертывалось.
gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git', :branch => 'master'до
gem 'rails_admin'или вы можете сделать то, что он предлагает, и Git ваш проект с рабочего сервера на локальную машину, связать его, а затем повторно на ваш сервер. Это решение может быть не на 100% правильным, но некоторые из них работали для меня... просто подумал, что поделюсь. Гудлак
еще одна причина ошибки:
Это немного глупо, но я уверен, что кто-то другой сделает ту же ошибку.
для рельсов 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 заметит дублирование и кричит с вышеуказанной ошибкой.
удачи с рельсами 4.
в нашем случае мы использовали функцию, которая не была доступна в старой версии bundler, которая работала на нашей производственной машине. Поэтому достаточно было обновить bundler, т. е. сделать a
gem update bundler.
это может быть опасная идея, но если абсолютно необходимо протестировать что-то в рабочей среде развертывания, вы можете отредактировать .bundle / config file
# This value is normally '1' # Set it to '0' BUNDLE_FROZEN: '0'теперь вызовите bundle, в моем случае мне нужно было обновить конкретный драгоценный камень, так что это моя команда
RAILS_ENV=production bundle update <whatever gem>вы, вероятно, должны изменить его обратно после обновления, так что все работает, как вы ожидаете, впоследствии. Опять же, это, вероятно, не поддерживается, и YMMV
я столкнулся с этим развертыванием приложения Nesta после некоторых обновлений gem. То, что сработало для меня, было удалить Gemfile.замок, используя
bundle installчтобы повторно сгенерировать его и развернуть снова.
я столкнулся с подобной проблемой, я сделал так
bundle installиbundle updateи Героку все еще отвергал мой толчок.я исправил проблему, просто удалив Gemfile.блокировка, а затем работает
bundle installснова. Я потом добавил, совершенные и толкнул, что мой репозиторий Git. После этого у меня не было проблем с тем, чтобы подтолкнуть к Героку.
для heroku вам не нужно менять синтаксис в
Gemfile. вы можете просто добавитьBUNDLE_GITHUB__HTTPS(обратите внимание на двойное подчеркивание) в качестве переменной среды и установите ее вtrue(в приборной панели вашего приложения heroku под на ). это позволит переключить протокол сgit://доhttps://для таких запросов.
У меня было сообщение об ошибке при попытке на Heroku. Я нашел следующее решение исправлено.
- Git pull origin master
- статус ГИТ
- коммитов
- Git push origin master
- Git push heroku master
эта проблема может быть связана с подмодулями, указывая на старые версии кода. Для меня, я решил эту проблему путем обновления подмодулей
Если у вас есть подмодули, попробуйте запустить:
git submodule update --init
bundle install
Comments