Ошибка при попытке развернуть обновленное приложение Rails в Heroku - / bin / bundle: невозможно выполнить двоичный файл: ошибка формата Exe c - PullRequest
0 голосов
/ 14 июля 2020

У меня есть ранее развернутый Ruby on Rails API, в который я хотел добавить дополнительные исходные данные.

Я получаю следующую ошибку при развертывании из интерфейса командной строки Heroku или из веб-интерфейса :

-----> Ruby app detected
-----> Installing bundler 2.0.2
-----> Removing BUNDLED WITH version in the Gemfile.lock
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.6.5
-----> Installing dependencies using bundler 2.0.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
       bash: /tmp/build_9062c7d5995d7f7c573d9509eb8f19d5/bin/bundle: cannot execute binary file: Exec format error
       Bundler Output: bash: /tmp/build_9062c7d5995d7f7c573d9509eb8f19d5/bin/bundle: cannot execute binary file: Exec format error
 !
 !     Failed to install gems via Bundler.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

Я не уверен, в чем проблема. Я пробовал:

  • Развертывание в новое приложение Heroku
  • Добавление Procfile
  • Добавление Ruby пакета сборки
  • Устранение некоторых выдающиеся предупреждения безопасности от Github путем локального запуска Bundle update и получения нового гем-файла в моем репо, до этого не было никаких новых изменений Gem

Ни одно из них не изменило получаемую мной ошибку.

Если я клонирую репо из github в новую папку на моем Macbook, я смогу запустить его локально.

На моем Macbook есть следующее:

  • Ruby Версия 2.6.5p114
  • Rails Version 6.0.3.2

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

Мне кажется, что это связано с bash невозможностью выполнить bin / bundle, но я не знаю, почему и как решить.

Я смутно помню, что у меня были проблемы В этом приложении я не смог запустить команды heroku run rake, возможно, получил аналогичное сообщение об ошибке, но для решения я думаю, что смог просто запустить heroku run bin/rake

Я считаю, что оригинал * Команда 1038 * была запущена в среде Windows 10 WSL, если это актуально.

РЕДАКТИРОВАТЬ: я могу воссоздать аналогичную проблему с rake, но исправление для rake не работает для bundle, и я даже не уверен, поможет ли это с проблемой развертывания.

➜  appbackend git:(master) heroku run rake
Running rake on ⬢ heroku-name-40049... up, run.8396 (Hobby)
bash: /app/bin/bundle: cannot execute binary file: Exec format error
➜  appbackend git:(master) heroku run bin/rake
Running bin/rake on ⬢ heroku-name-40049... up, run.5201 (Hobby)
Abort testing: Your Rails environment is running in production mode!
➜  appbackend git:(master) 

➜  appbackend git:(master) heroku run bundle install
Running bundle install on ⬢ heroku-name-40049... up, run.7746 (Hobby)
bash: /app/bin/bundle: cannot execute binary file: Exec format error
➜  appbackend git:(master) heroku run bin/bundle install
Running bin/bundle install on ⬢ heroku-name-40049... up, run.4632 (Hobby)
bash: bin/bundle: cannot execute binary file: Exec format error

1 Ответ

0 голосов
/ 15 июля 2020

Оказывается, это было в точности так, как указано в сообщении об ошибке Exec format error.

Файл пакета в каталоге bin имеет неправильный формат. Не уверен, как мне вообще удалось развернуть (история этого файла имеет только 2 версии в репозитории, первая фиксация и теперь исправление).

Мне удалось решить, перезаписав пакет файл из другого рабочего рельса установить. Оценил предоставленную помощь.

...