Ruby 2.6.1 и Bundler 2.0.1 для Heroku: я должен написать Procfile? - PullRequest
0 голосов
/ 09 июля 2019

У меня возникают ошибки, с которыми я не могу справиться при попытке развернуть приложение в Heroku (это мой первый раз).

# ERROR when I try to `git push heroku master`
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_e569680f858939ef8f1f8ef3e8902eff/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_e569680f858939ef8f1f8ef3e8902eff/vendor/bundle/ruby/2.6.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 buildpacks
=== staging-det-music Buildpack URLs
1. heroku/nodejs
2. heroku/ruby
# Gemfile.lock
RUBY VERSION
   ruby 2.6.1p33

BUNDLED WITH
   2.0.1

Я пробовал несколько решений, таких как:

  • работает RAILS_ENV=production bundle exec rake assets:precompile (см. здесь )

  • добавление ключа RAILS_SERVE_STATIC_FILES (тоже самое)

  • обновить Ruby до 2.6.3 (см. здесь , не удается найти 2.6.3 с rbenv или rvm)

Я полагаю, это может быть связано с этой проблемой . Меня это беспокоит?

2) При использовании binstubs для запуска команды вместо bundle исполняется неправильно версия Bundler может активироваться при использовании Ruby 2.6.x. Этот баг сообщается Ruby Core и будет исправлено, когда Ruby 2.6.3 освобожден.

В краткосрочной перспективе, обходной путь должен гарантировать, что все команды в Procfile и app.json предваряются пакетом exec. Например:

web: bundle exec bin/rails server -p $PORT -e $RAILS_ENV

worker: bundle exec sidekiq -C config/sidekiq.yml

Как новичок, я чувствую себя действительно потерянным, кто-нибудь может мне помочь в этом?

Спасибо за ваше время

РЕШЕНИЕ: найдено здесь удалено BUNDLED WITH и следующая строка в Gemfile.lock

1 Ответ

1 голос
/ 10 июля 2019

Есть известных проблем с Bundler 2 на Heroku , включая эту:

Gemfile.lock, в котором указан bundler 2.0.2, не работает с bundler 2.0.1

Если вы попытаетесь развернуть приложение, которое использует bundler 2.0.2, на платформе Heroku с bundler 2.0.1, вы можете получить эту ошибку:

`find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

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

Обновите Ruby до версии не ниже 2.6.3 локально, обновите версию ruby в Gemfile, bundle install, зафиксируйте изменения и повторно разверните.

...