(仮)Fラン 文卒 元ニート エンジニアのチリツモブログ

フリーランスのリアルを発信します。Twitter -> @fran_engineer

Ruby on Rails チュートリアル 「1.5.2 Herokuにデプロイする(1)」でデプロイに失敗する

概要

Ruby on Rails チュートリアル(第6版)「1.5.2 Herokuにデプロイする(1)」で、壮大にハマってしまいました。

GoogleTwitter で調べている感じ、苦戦している方が多そうだったので記事にします。

ハマりどころ

ハマった箇所は大きく2つ。

  • webpack not found
  • App crashed

解決する為に行なったことをそれぞれ記載して行きます。

webpack not found

事象

チュートリアルの手順通り、heroku にコードを push。

$ git push heroku master

すると、下記のようにビルドでコケてしまいます。

Compilation failed:
       error Command "webpack" not found.
対処法1:ビルドバックの追加
$ heroku buildpacks:add --index 1 heroku/nodejs
$ heroku buildpacks:add --index 2 heroku/ruby

デフォルトでは ruby に関するビルドしか行われないので、node.js 周りのビルドに対応させる。
すると今度は node.js の起動コマンドが優先的に実行されてしまうので、ruby での起動を行う為に、ruby の buildpack も明示的に指定する。

参考
zenn.dev

対処法2:package.json に webpacker の依存を追加
{
  "name": "hello_app",
  "private": true,
  "dependencies": {
    "@rails/actioncable": "^6.0.0",
    "@rails/activestorage": "^6.0.0",
    "@rails/webpacker": "5.2.1", // ココを追加
    "@rails/ujs": "^6.0.0",
    "turbolinks": "^5.2.0"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^4.2.1"
  }
}

反映

$ yarn install

参考
github.com


ビルドが通った〜!!と思ったら、アプリ側で別のエラー。。(下に続く)

App crashed

事象

アプリのアクセスで heroku のエラー画面が表示される。
下記のログが残っていました。

2021-09-25T20:37:14.473516+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" ...(略)
対処法:config/database.yml で本番のDB接続設定を修正

これを

production:
  <<: *default
  database: db/production.sqlite3

これに書き換えます。

production:
  <<: *default
  adapter: postgresql
  database: db/production.pg

heroku は sqlite のサポートが無いということで、
チュートリアルでも Gemfile 側の対応を行う箇所がありますが、
DB 接続設定側での対応が漏れていた感じですね。

所感

エンジニア未経験の独学で、よく利用されるこのチュートリアルですが、
第1章で、いきなりこんな難しいハマり方をしたら、自分なら挫けちゃいますね(笑)

ハマっている方が前に進めることを祈っております!