- herokuにデプロイする際にApplication errorが発生した
- pumaが動かない
- heroku logs –tailの見方が分からない
今回はHerokuにデプロイした際に発生したエラーの対応を解説していきます。
ちなみになぜデプロイが必要かと言うと、ローカル環境(皆さんのPC)で作ったアプリケーションを色んな人がWeb上で見れるようにするためですね。
Contents
Herokuへデプロイは完了したのですが、アプリの画面が下画像のようになりました。おそらくソースコード内におかしい部分があるかと思います。

画面上にエラーが出た場合の対処方法を書いてくれています。内容を要約すると「heroku logs –tailコマンドでログを確認してね」といった感じです。
ちなみに英語に不安を感じる方はDeepl(ディープル)という翻訳アプリがおすすめです。技術的な文章でも違和感のない翻訳をしてくれます。
まずはターミナルで下記コマンドを入力してください。
$heroku logs --tail
実行するとこのようにログ(履歴)を見ることができます。
今回はオレンジ線の部分がエラーの原因と推測しました。
State changed from starting to crashedと書いているところを重点的に見たほうが良いですね!

上の画像だと見づらいので対象部分だけ切り抜くと下のようなことが書いています。
エラー①
2020-08-17T13:47:09.690099+00:00 heroku[router]: at=error code=H10
desc="App crashed" method=GET path="/favicon.ico"
host=blogapp-keiver.herokuapp.com
request_id=099fd697-f156-4bb9-9deb-045e3dfda033 fwd="126.255.31.108"
dyno= connect= service= status=503 bytes= protocol=https
何やらcode = H10なるものがおかしいようですね。
エラー②
bundler failed to load command:puma.....(以下省略)
OptionParser::AmbiguousOption:ambiguous option -c
pumaコマンドの読み込みに失敗しているようです。
code = H10のエラーが出た場合、Herokuを再起動すると直すことが多いようです。
詳しいコマンドについてはQiita記事を読んで欲しいのですが、一点誤解を招きそうなところがあったので補足しておきます。
記事の中でHerokuを再起動するために、下記コマンドを入力すると紹介されています。
$heroku restart --app application_name
ただ、上の通り「app application_name」としても、アプリがないよ!と言われてしまいます。
ですので、デプロイしたアプリ名に変えてコマンドを実行すればOKです。
僕の場合だとこんな感じですね。
$heroku restart -a blogapp-keiver
これで再起動が完了します。
以上Qiita記事に関する補足でした。
2つ目のpumaに関するエラーについて解説していきます。
もう一度、ログのエラー画面を確認してみます。
bundler failed to load command:puma.....(以下省略)
OptionParser::AmbiguousOption:ambiguous option -c
オプションとは、ターミナル上で入力する「rails -s」の「-s」の部分です。
今回はオプションの「-c」がおかしくて、「puma -c」を実行できずにエラーが出ているようです。なるほど。
Procfile上に下記コードを書いていました。ちなみにHeroku上でpumaを動かすために、Procfileに下記コードを書かないといけないです。
web: bundle exec puma -c config/puma.rb
release: bundle exec rake db:migrate
と書いていましたが、正しくは大文字の「C」でした….
web: bundle exec puma -C config/puma.rb
release: bundle exec rake db:migrate
このようにログを見れば、エラー箇所の特定ができます。初めは難しいですが、何度も確認していれば慣れてきますので、頑張りましょう!
最後に参考になった記事を紹介しておきます。APサーバとかpumaって何?って方におすすめです。
pumaが動かない場合の対応例を紹介しています。
コメントを残す