Почему я получаю сообщение об ошибке при попытке развернуть приложение Ruby on Rails на Heroku?

Когда я пытаюсь развернуть свое приложение Ruby on Rails на Heroku, я получаю несколько ошибок:

git push heroku master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 585 bytes | 585.00 KiB/s, done.
Total 5 (delta 3), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Rake app detected
remote: rake aborted!
remote: LoadError: cannot load such file -- bundler/setup
remote: /tmp/build_7852350a661d0da59c96dfb8f01c0e07/config/boot.rb:3:in `<top (required)>'
remote: /tmp/build_7852350a661d0da59c96dfb8f01c0e07/config/application.rb:1:in `require_relative'
remote: /tmp/build_7852350a661d0da59c96dfb8f01c0e07/config/application.rb:1:in `<top (required)>'
remote: /tmp/build_7852350a661d0da59c96dfb8f01c0e07/Rakefile:4:in `require_relative'
remote: /tmp/build_7852350a661d0da59c96dfb8f01c0e07/Rakefile:4:in `<top (required)>'
remote: (See full trace by running task with --trace)
remote:  !     Push rejected, failed to compile Rake app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to remojobs.
remote: 
To https://git.heroku.com/sampleapp-miro.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/sampleapp-miro.git'

Я использую Ruby 2.4.0, Rails 5.2.3 и Bundler 2.0.2.

Ниже привожу полные ошибки от heroku logs:

2019-06-29T18:04:32.000000+00:00 app[api]: Build started by user [email protected]
2019-06-29T18:04:34.000000+00:00 app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/8a339527-87e4-40c9-bee5-326119c29f60/activity/builds/a430cb9b-857a-4764-9abc-cefd14e45caf
2019-06-29T18:08:37.167236+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=sampleapp-miro.herokuapp.com request_id=f2ff0cfa-9faa-46d8-81c2-cd8c200fdc8a fwd="195.136.56.0" dyno= connect= service= status=503 bytes= protocol=https
2019-06-29T18:08:41.059684+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=sampleapp-miro.herokuapp.com request_id=456e9d84-7286-4b75-8a7d-50e397b9b8be fwd="195.136.56.0" dyno= connect= service= status=503 bytes= protocol=https
2019-06-29T18:09:09.000000+00:00 app[api]: Build started by user [email protected]
2019-06-29T18:09:10.000000+00:00 app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/8a339527-87e4-40c9-bee5-326119c29f60/activity/builds/c596ea0f-4936-45e1-a415-517178338c70
2019-06-29T18:13:26.000000+00:00 app[api]: Build started by user [email protected]
2019-06-29T18:13:27.000000+00:00 app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/8a339527-87e4-40c9-bee5-326119c29f60/activity/builds/c78a0330-354f-4c1f-b04e-24418ab36b02
2019-06-29T18:14:42.000000+00:00 app[api]: Build started by user [email protected]
2019-06-29T18:14:43.000000+00:00 app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/8a339527-87e4-40c9-bee5-326119c29f60/activity/builds/29cfa1cd-6af1-4bcc-8b4d-825e9131043c
2019-06-29T18:15:32.000000+00:00 app[api]: Build started by user [email protected]
2019-06-29T18:15:33.000000+00:00 app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/8a339527-87e4-40c9-bee5-326119c29f60/activity/builds/43c3e880-6880-4cc8-b8b1-5184e7d66c86
2019-06-29T18:17:04.000000+00:00 app[api]: Build started by user [email protected]
2019-06-29T18:17:05.000000+00:00 app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/8a339527-87e4-40c9-bee5-326119c29f60/activity/builds/d10a1410-48e9-48d1-9400-43a1b4fa0ea1

Когда я запускаю heroku buildpacks, я просто вижу

Buildpack URL https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

ОБНОВЛЕНО

Я использовал: heroku buildpacks:remove https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

и после этого:

git push heroku master

дает мне следующие ошибки:

remote: Bundle completed (163.52s) remote: Cleaning up the bundler cache. remote: -----> Installing node-v10.15.3-linux-x64 remote: -----> Detecting rake tasks 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) - did find: [bundler-2.0.2] remote: ! Checked in 'GEM_PATH=vendor/bundle/ruby/2.4.0', execute 'gem env' for more information remote: ! To install the version of bundler this project requires, run gem install bundler -v '2.0.1' remote: /app/tmp/buildpacks/b7af56db6e6816adee09d510091abc07/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) - did find: [bundler-2.0.2] remote: Checked in 'GEM_PATH=vendor/bundle/ruby/2.4.0', execute 'gem env' for more information remote: To install the version of bundler this project requires, run gem install bundler -v '2.0.1'


person Miro    schedule 29.06.2019    source источник
comment
Ваши Gemfile и Gemfile.lock обновлены и включены в ваш репозиторий?   -  person Chris    schedule 29.06.2019
comment
@Chris Да, Gemfile и Gemfile.lock обычно включаются.   -  person Miro    schedule 29.06.2019
comment
Пожалуйста, отредактируйте свой вопрос и добавьте вывод журнала, который предшествует тому, чем вы уже поделились.   -  person Chris    schedule 29.06.2019
comment
Я только что отредактировал сообщение и добавил журналы Heroku.   -  person Miro    schedule 29.06.2019
comment
Итак, в вашем журнале указано No web processes running. (а) Что у тебя в Procfile? (b) Зарегистрированы ли ваши Gemfile и Gemfile.lock в вашем репозитории?   -  person Chris    schedule 29.06.2019
comment
(a) У меня нет этого файла в моем проекте или я не знаю, что он у меня есть. б) да, включены.   -  person Miro    schedule 30.06.2019
comment
Находятся ли Gemfile и Gemfile.lock в корневом (верхнем каталоге) вашего репозитория? Это полный вывод сборки? Там должно быть намного больше.   -  person Chris    schedule 30.06.2019
comment
@Chris Да, это нормально, что эти файлы находятся в корне проекта. Где они должны быть как не в основном каталоге?   -  person Miro    schedule 30.06.2019
comment
Нет, они должны быть в корне. Я просто пытаюсь понять, почему ваш журнал сборки такой короткий. Похоже, он не устанавливает никаких зависимостей ... вы вручную установили пакет сборки или полагаетесь на обнаружение пакета сборки? Попробуйте запустить heroku buildpacks и посмотрите, что там написано.   -  person Chris    schedule 30.06.2019
comment
@Chris Хм, heroku buildpacks показывает только Buildpack URL https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks   -  person Miro    schedule 30.06.2019


Ответы (2)


Хм, heroku buildpacks показывает только

Buildpack URL https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

Вот твоя проблема. В какой-то момент вы явно выбрали этот пакет сборки, и он оказался неправильным. Я предлагаю удалить параметр buildpack:

heroku buildpacks:remove https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

Затем снова запустите heroku buildpacks. Вы должны увидеть что-то вроде

<your-app> has no Buildpack URL set.

После этого повторно разверните свой код. Heroku распознает проект Ruby по наличию Gemfile и автоматически использует соответствующий пакет сборки.

person Chris    schedule 30.06.2019
comment
Хорошо, я сделал ваши предложения выше. Все в порядке, пока пакет не будет завершен: 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) - did find: [bundler-2.0.2] remote: ! Checked in 'GEM_PATH=vendor/bundle/ruby/2.4.0', execute 'gem env' remote: ! To install the version of bundler this project requires, run 'gem install bundler -v '2.0.1'' - person Miro; 30.06.2019
comment
Это очень тяжело читать в комментарии. Пожалуйста, отредактируйте свой вопрос и добавьте туда обновленную информацию. - person Chris; 30.06.2019
comment
Теперь я вижу еще одну вещь: когда я удаляю все версии сборщика (2.0.1 и 2.0.2) и снова устанавливаю 2.0.1, как показано ниже, я вижу это Installing dependencies using bundler 2.0.2, когда я снова пытаюсь git push heroku master. Ты знаешь почему? - person Miro; 30.06.2019
comment
А внизу Gemfile.lock есть: RUBY VERSION: ruby 2.4.0p0 и BUNDLED WITH: 2.0.1 - person Miro; 30.06.2019
comment
ОК, я решил вышеуказанную проблему и добавляю обновленную информацию. Спасибо :) - person Miro; 01.07.2019
comment
Пожалуйста, не редактируйте ответы в своем вопросе и не добавляйте "решено" в заголовок. Вместо этого отметьте правильный ответ, нажав на галочку. Вы также можете добавить свой собственный ответ и принять его, если ни один из полученных вами ответов не решил вашу проблему. Я откатил ваш вопрос на предыдущую версию. - person Chris; 02.07.2019

Хорошо, я решил проблему. Может быть, это поможет кому-то в будущем:

  • обновить версию Ruby до 2.6.1
  • gem uninstall bundler и снова установить gem install bundler -v 2.0.2
  • удалить Gemfile.lock и bundle install
  • git push heroku master
  • это работает :)
person Miro    schedule 04.07.2019