Как мне установить Webpacker на Heroku с Rails 6

#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 все еще установлен, тогда как ранее этого не было.