🤖

railsで作成したアプリケーションをherokuにデプロイしたらエラーになった

2022/10/05に公開

railsで作成したアプリケーションをherokuにデプロイしたら、ローカルでは動いていたのにエラーになったので、解決しました。

エラー内容は以下のようなものです。

at=error code=H10 desc="App crashed" method=GET path="/api/v1/hello" host=rails-v1-api.herokuapp.com request_id=b5185345-e026-4fd9-a864-05be20cd3914 fwd="61.210.221.78" dyno= connect= service= status=503 bytes= protocol=https

これだけでは何のことかわからなかったのでさらに見ていくと、以下のような記述があった。

中略
2022-10-03T15:58:22.730731+00:00 app[web.1]: [3] ! Unable to load application: LoadError: cannot load such file -- net/pop
2022-10-03T15:58:22.730873+00:00 app[web.1]: bundler: failed to load command: puma (/usr/local/bundle/bin/puma)
2022-10-03T15:58:22.731050+00:00 app[web.1]: /usr/local/bundle/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require': cannot load such file -- net/pop (LoadError)
2022-10-03T15:58:22.731061+00:00 app[web.1]: from /usr/local/bundle/gems/zeitwerk-2.6.0/lib/zeitwerk/kernel.rb:35:in `require'
中略

net/popがないよ!ということらしい。

原因

rubyのバージョンによって、標準で入っているライブラリが色々変更になっており、railsとの齟齬が生まれてしまっていることが原因だった。

解決策

解決策は簡単で、Gemfileに「ないよ!」と言われたライブラリをインストールするように追記するだけ。
Gemfileに以下の記述を追加します。

gem 'net-pop'

まだできない!

同じエラーになったので、同じように他のライブラリもインストールしていくと動くようになりました。
ただ、本当はrubyとrailsをバージョン情報を見て、このようなエラーにならない環境を作った方が良いのかもしれない。。。

Discussion