💎

Ruby on Railsで作成したアプリをHerokuにデプロイするまでにでたエラー

2024/04/19に公開

初めに

Railsを使ってWebアプリの開発を進めていましたが、Herokuにデプロイする際につまづいた箇所が何箇所かあったので、備忘録としてこちらにまとめておきます。

デプロイの流れはこちらのページを参考に進めました。

https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39#herokuへの登録

つまづき① デプロイ時に必要なパッケージがない問題

内容

エラー文はこちらでした。

Precompiling assets failed / Error: Cannot find package '@babel/plugin-proposal-private-property-in-object'

@babel/plugin-proposal-private-property-in-objectというパッケージがないようです。

package.jsonには記載がなければ新たにインストールするだけなのですが、しっかりとインストールされているようだったので困りました。

解決策

解決のためにはbabel.config.jsを修正する必要がありました。

babel.config.jsには以下のように利用しているプラグインを記載している箇所があります。

      [
        '@babel/plugin-proposal-private-methods',
        {
          loose: true
        }
      ],
      [
        '@babel/plugin-proposal-private-property-in-object',
        {
          loose: true
        }
      ],

このproposalの部分をtransformに変更する必要がありました。

      [
        // proposalをtransformに変更
        '@babel/plugin-transform-private-methods',
        {
          loose: true
        }
      ],
      [
        // proposalをtransformに変更
        '@babel/plugin-transform-private-property-in-object',
        {
          loose: true
        }
      ],

babel.config.jsを変更して再度デプロイを行ったところ無事通りました。

こちらの記事を参考にさせていただきました。ありがとうございます。
https://mrradiology.hatenablog.jp/entry/2023/09/29/122815

つまづき② データベースがない問題

内容

無事デプロイが完了したのですが、URLを開くとこんな表示でした。

We're sorry, but something went wrong.
If you are the application owner check the logs for more information.`

ログを確認するとどうやらデータベースがないから接続ができないよとのこと。

ActiveRecord::ConnectionNotEstablished: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" 
failed: No such file or directory (ActiveRecord::ConnectionNotEstablished)

解決策

HerokuのResourcesからデータベースのアドオンを追加する必要がありました。
画像のFind more add-onsからHeroku Postgresを検索し、追加します。

スクリーンショット 2024-04-19 9.39.09.png

データベースへのリンクがHerokuの環境変数に自動的に発行されるので、urlをdatabase.ymlに追加しましょう。

production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5
  # この行を追加
  url: <%= ENV['DATABASE_URL'] %>

その後、マイグレーションもお忘れなく。

heroku run rails db:migrate

再度デプロイすると無事、アプリが起動しました。

デプロイしてみると意外と手こずるものですね…
日々精進したいと思います。

Discussion