#ruby-on-rails #heroku #deployment #webpacker
#ruby-on-rails #героку #развертывание #webpacker
Вопрос:
Я пытаюсь установить приложение Rails 6 на Heroku с помощью Webpacker
Команда git push heroku, похоже, запускает весь процесс сборки
В node.js успешно вызывается и завершается.
Затем devDependencies, по-видимому, обрезаются.
Затем запускается ruby buildpack, который устанавливает все драгоценные камни ruby и «обнаруживает задачи рейка», во время которых он запускает ресурсы рейка: предварительная компиляция
Затем я получаю:
Compilation failed:
CLI for webpack must be installed.
webpack-cli (https://github.com/webpack/webpack-cli)
Я почти уверен, что мне нужно бежать
bin/rails webpacker:install
где-то перед началом компиляции ресурсов, но нет возможности настроить сценарий сборки, как это происходит с node.js package.json-скрипты для предварительной сборки и последующей сборки из того, что я вижу, и я просто получаю:
Precompiling assets failed.
Push rejected, failed to compile Ruby app.
Итак, как я должен обойти это и правильно установить webpacker, прежде чем heroku попытается скомпилировать ресурсы?
Комментарии:
1. Вы добавили
RAILS_MASTER_KEY
в качестве конфигурационной переменной? Если нет, то, вероятно, именно поэтому он терпит неудачу.2. Спасибо, что обратили внимание на RAILS_MASTER_KEY @sam. Это ценная информация, поскольку мне это обязательно понадобится, когда я зайду так далеко! К сожалению, на данный момент я даже не могу добиться успеха git push из-за проблем, которые я описал в своем первоначальном сообщении — я не могу найти точку в цикле ruby buildpack для успешной установки webpacker. Есть идеи?
3. Какие версии webpack / webpack-cli вы используете? Несколько недель назад у меня возникла проблема (та же ошибка) после обновления моих пакетов до последней версии. В итоге я понизил рейтинг, чтобы заставить все работать. Извините, я не могу точно вспомнить, в чем заключалась сделка, но я могу попытаться воссоздать ее.
4. Мерзавец толкает ногами node.js а затем ruby buildpacks. В моей локальной среде мне пришлось фактически явно установить webpacker с помощью bin / rails webpacker:install, даже если у меня есть webpacker (5.2.1) в моем Gemfile. В heroku задача rake assets: precompile запускается автоматически, но попадает: сбой компиляции: должен быть установлен CLI для webpack. веб-пакет-cli ( github.com/webpack/webpack-cli ) Мы будем использовать «yarn» для установки CLI через «yarn add -D webpack-cli». Вы хотите установить ‘webpack-cli’ (да / нет): не удалось выполнить предварительную компиляцию ресурсов. Push отклонен, не удалось скомпилировать приложение Ruby.
5. Конечно, все вышесказанное выполняется в скрипте, и поэтому у меня никогда не будет возможности ответить «да» на установку webpack-cli. Я в таком замешательстве. В любом случае, спасибо за вашу помощь @rmlockerd
Ответ №1:
Я думаю, что решение заключается в том, что, поскольку я запускаю 2 пакета сборки последовательно, node.js за которым следует ruby, мне нужно предотвратить node.js buildpack от обрезки зависимостей devdependencies (т.е. webpack), определенных в package.json как:
"devDependencies": {
"webpack-cli": "^4.3.1",
"webpack-dev-server": "^3.11.1"
},
Автор::
echo Setting Heroku to not prune dev dependencies
heroku config:set NPM_CONFIG_PRODUCTION=false YARN_PRODUCTION=false
Конечным результатом, я думаю, является то, что, когда ruby buildpack приходит для вызова задачи assets: precompile rake, CLI webpacker все еще установлен, тогда как ранее этого не было.