Heroku устанавливает Bundler, затем выдает ошибку Bundler 2.0.1 - PullRequest
9 голосов
/ 20 июня 2019

Я пытаюсь развернуть приложение Rails в Heroku. Прошло много времени с тех пор, как я там что-то развернул, но я не понимаю, что здесь происходит.

Это довольно простое приложение на Rails 5. Развертывание проходит через Gemfile гладко, затем происходит сбой с ошибкой, требующей, чтобы я установил Bundler v 2.0.1. Вот забавная часть журнала:

remote:        Fetching devise 4.6.2
remote:        Installing sass-rails 5.0.7
remote:        Installing devise 4.6.2
remote:        Bundle complete! 26 Gemfile dependencies, 78 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into `./vendor/bundle`
remote:        Post-install message from i18n:
remote:        
remote:        HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
remote:        But that may break your application.
remote:        
remote:        Please check your Rails app for 'config.i18n.fallbacks = true'.
remote:        If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
remote:        'config.i18n.fallbacks = [I18n.default_locale]'.
remote:        If not, fallbacks will be broken in your app by I18n 1.1.x.
remote:        
remote:        For more info see:
remote:        https://github.com/svenfuchs/i18n/releases/tag/v1.1.0
remote:        
remote:        Post-install message from sass:
remote:        
remote:        Ruby Sass has reached end-of-life and should no longer be used.
remote:        
remote:        * If you use Sass as a command-line tool, we recommend using Dart Sass, the new
remote:          primary implementation: https://sass-lang.com/install
remote:        
remote:        * If you use Sass as a plug-in for a Ruby web framework, we recommend using the
remote:          sassc gem: https://github.com/sass/sassc-ruby#readme
remote:        
remote:        * For more details, please refer to the Sass blog:
remote:          https://sass-lang.com/blog/posts/7828841
remote:        
remote:        Removing bundler (2.0.1)
remote:        Bundle completed (47.21s)
remote:        Cleaning up the bundler cache.
remote: -----> Installing node-v10.14.1-linux-x64
remote:        Detected manifest file, assuming assets were compiled locally
remote: -----> Detecting rails configuration
remote: -----> Detecting rake tasks
remote: 
remote:  !
remote:  !     Could not detect rake tasks
remote:  !     ensure you can run `$ bundle exec rake -P` against your app
remote:  !     and using the production group of your Gemfile.
remote:  !     Activating bundler (2.0.1) failed:
remote:  !     Could not find 'bundler' (2.0.1) required by your /tmp/build_94d6a4f5d4fbb862672998d5d06d2506/Gemfile.lock.
remote:  !     To update to the latest version installed on your system, run `bundle update --bundler`.
remote:  !     To install the missing version, run `gem install bundler:2.0.1`
remote:  !     Checked in 'GEM_PATH=/tmp/build_94d6a4f5d4fbb862672998d5d06d2506/vendor/bundle/ruby/2.7.0', execute `gem env` for more information
remote:  !     
remote:  !     To install the version of bundler this project requires, run `gem install bundler -v '2.0.1'`
remote:  !
remote: /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/rake_runner.rb:106:in `load_rake_tasks!': Could not detect rake tasks (LanguagePack::Helpers::RakeRunner::CannotLoadRakefileError)
remote: ensure you can run `$ bundle exec rake -P` against your app
remote: and using the production group of your Gemfile.
remote: Activating bundler (2.0.1) failed:
remote: Could not find 'bundler' (2.0.1) required by your /tmp/build_94d6a4f5d4fbb862672998d5d06d2506/Gemfile.lock.
remote: To update to the latest version installed on your system, run `bundle update --bundler`.
remote: To install the missing version, run `gem install bundler:2.0.1`
remote: Checked in 'GEM_PATH=/tmp/build_94d6a4f5d4fbb862672998d5d06d2506/vendor/bundle/ruby/2.7.0', execute `gem env` for more information
remote: 
remote: To install the version of bundler this project requires, run `gem install bundler -v '2.0.1'`

Я не понимаю, что происходит, поскольку Heroku, похоже, проходит через развертывание очень хорошо, затем удаляет упаковщик, затем выдает ошибку в задачах rake и снова запрашивает сборщик. Я уже выполнил RAILS_ENV=production bundle exec rake assets:precompile, и он показывается в актуальном состоянии. Я, должно быть, что-то здесь упускаю, надеюсь, кто-то с более недавним опытом в Heroku может указать на это.

Редактировать Я также выполнил команду bundle exec rake -P без сбоев

Ответы [ 2 ]

10 голосов
/ 27 июня 2019

Я исправил наши сборки на Heroku, обновившись до Ruby 2.6.3 и Bundler 2.0.2.

Наши сборки на Heroku начали ломаться в последние пару дней с похожим сообщением об ошибке:

Could not find 'bundler' (2.0.1) required by your ... Gemfile.lock.

Мы работали на Ruby 2.6.1 и Bundler 2.0.1 на наших локальных сборках, которые работали нормально. Этот комбо отлично работал на Heroku вплоть до пары дней назад.

Просматривая документы Heroku, я заметил статью Центра разработчиков , которая была обновлена ​​26 июня 2019 года. В ней говорится:

Bundler 2.0.2 Смотрите вопросы по 2.0.1.

Многие люди сталкиваются с проблемой 4, которая возникает только при выпуске новой версии Bundler. Это происходит из-за ошибки в Rubygems и может быть исправлено путем обновления до 2.5.5+ или 2.6.3 +.

Выпуск 4 в версии 2.0.1:

[Вы можете получить ошибку] ​​из-за ошибки в коде проверки версии пакета Rubygems. Чтобы избежать этой проблемы, обновите свою версию Ruby. Это исправлено в 2.5.5+ и 2.6.3+. Если вы не обновите свою версию Ruby, то каждая новая версия Bundler 2.x будет вызывать эту проблему.

Bundler 2.0.2 был выпущен 13 июня 2019 года и похоже, что Heroku начал его использовать.

Я заметил, что вы используете Ruby 2.7 из ваших журналов. Я бы предложил указать ruby '2.6.3' в вашем Gemfile, установить Bundler 2.0.2 и связать / сгенерировать Gemfile.lock с этой комбинацией. Затем вы должны увидеть это в нижней части файла блокировки, и, надеюсь, ваше приложение будет успешно построено на Heroku:

RUBY VERSION
   ruby 2.6.3p62

BUNDLED WITH
   2.0.2
4 голосов
/ 29 июня 2019

Скорее всего, все, что вам нужно для исправления, это gem install bundler -v 2.0.2, а затем bundle update --bundler.Передайте те изменения, которые были внесены в ваш Gemfile.lock, и тогда ваш следующий толчок Heroku пройдет без проблем.

...