【Railsでアプリ開発中】プログラミング初心者の勉強ブログ #41
こんにちは。
41日目。Herokuで本番環境にデブロイするときいつも上手く行かない。そんな悩みをお持ちの方に、Herokuの覚えておくべきコマンドとエラー時の対応方法についてお届けします。
はじめに
この記事は、railsフレームワークでオリジナルwebアプリ「免許学科試験学習サイト」作成中の僕が、プログラミングをしている中で気づいたことや学んだことを書いております。プログラミング初心者なので知識は少ないですが、現在通っているプログラミングスクール「DIVE INTO CODE」で学んでいることや、ネットで見つけた様々な記事を参考に記事を作成しております。
目次
[toc]
Herokuとは
Herokuは、簡単にWebサーバ環境構築を行うことができるサービスです。
PaaS(Platform as a Service)というサービスの一つで、「システム稼働に必要なツール群を準備してあるコンピュータ」をインターネット上で利用できます。
railsだったらサーバー立ち上げで「rails s」コマンドを入力する必要がありますが、PaaSはそういうのも自動でやってくれます。
要するに簡単に自分の作ったアプリを本番環境にあげれますよ、っていうサービスです。
Herokuでのデプロイ手順(新規)
Herokuデプロイの手順を紹介します。「Herokuへのデプロイは順番が大切」です。必ず以下の順番で行ってください。
1、アセットプリコンパイルの実行
「$ rails assets:precompile RAILS_ENV=production」
このコマンドをまず最初に行う。ギットとかヘロクのコマンドに目を奪われがちだが(俺だけかも)、ちゃんとアセットプリコンパイルしないとHerokuが弾いてくる。Herokuへのデプロイは順番が大切。Herokuへのデプロイは順番が大切。二回言うくらい大切。アセットプリコンパイルは最初にやった方が良い。なぜかこのコマンドだけ長ったるく、いまだにカンニングしないと不安で打ち込めない。
なお、打ち込んで安心してはいけない。ちゃんとアセットプリコンバイルできているかターミナルで確認しないといけない。コマンドを入力しても完了していない時がある。特に「Gem “devise”」使ってアプリ開発してる方、アセットプリコンパイルできてない可能性あります。(自分の体験談です。)
2019/08/14訂正
herokuは自動でprecompileしてくれるので、自分で行う必要はないです。
2、Gitコマンド処理
1.「$ git add -A」
2.「$ git commit -m “コメント”」
この2つがGitのコマンド。
1.「$ git add -A」で全てのデータをステージング領域にあげる。
2.「$ git commit -m “コメント”」で、ステージング領域からリポジトリへあげる(コミットする)。コメントは初回コミットの場合「”init”」で良い。コメントは日本語ではなく、英語表記すべき。
この2つもちゃんと実行されているか確認すべき。全てコミットされていれば、もう一回「$ git commit -m “コメント”」したときに「up to date」って出てくる。「時代遅れ」って意味で高校の時に覚えた「up to date」。もっと優しい言い方をして欲しいわ、って思ってたが、改めて調べ直したら「最新(式)の」って意味が最初に出てきた。railsは適切な表現をしてる。悪いのは高校の時の教材の方であった。
3、Herokuへのデブロイ
1.「$ heroku login」
2.「$ heroku create」
3.「$ git push heroku master」
4.「$ heroku run rails db:migrate」
次にこの4つを実行する。 (厳密には、3.「$ git push heroku master」はGitのコマンドだが、こっちで紹介)
1.「$ heroku login」でHerokuにログインする。ログインするためにはHeroku公式サイトで「Sign up for free」押して新規登録が必要。(サインアップの解説は省略します。)すでにログインしている方は飛ばしてください。
2.「$ heroku create」でHerokuアプリを新規作成。独特な名前のヘロクアプリが新規作成される。
3.「$ git push heroku master」でデプロイする。一番時間がかかる。ターミナルに文字がいっぱい出てくる。ここの完了待ちが一番緊張する。「Error」が出たときそれなりの焦燥感を抱く。なお「Error」が出なくても安心できない。
「$ git push heroku master」完了時のターミナルでの表示
remote: Verifying deploy… done.
To https://git.heroku.com/fierce-mountain-94329.git
* [new branch] master -> master
4.「$ heroku run rails db:migrate」でHerokuアプリのマイグレーションをする。必ずこれも行う必要がある。DB関係はデプロイしただけではHerokuは何もやってくれない。
ここまでの処理を全てしっかり完了していたら、Herokuアプリをブラウザで開くことができます。
緊張が走ります。だが、大体一発目はうまく行ってない。げんなりして一回休憩を挟みましょう。
4、注意点
ここまでで何回も書いてますが、「順番を守る」ことが大事です。
「順番を守る」=「一つ一つの処理がちゃんと完了しているか確認する」ことでもあります。
あとはエラーは出るものだと最初から思っておくと楽です。Herokuデプロイみたいな環境系の問題は、初心者はみな悩まされてます。(DIVE INTO CODEの受講者も周りはみんな結構悩んでます。)
Googleで調べればなんとかなります。大量の意味わからないコードに気持ちで負けなければなんとかなります。(今のところ。)
Herokuで覚えておくべきコマンド
「$ heroku open」
Herokuアプリをブラウザで開くことができるコマンド。わざわざURLをアプリ名をコピペしなくても、このコマンドをターミナルに入力するだけで、ブラウザが起動し、現在ターミナルで開いているディレクトリ内のアプリケーションを表示してくれる。とても楽。
「$ heroku config」
現在ターミナルで開いているディレクトリのHerokuアプリ名を確認できる。アプリ名を忘れてしまったとき便利。余談だがヘロクのアプリ名は独特である。最近印象に残ったアプリ名は「evening-temple-数字」。「午後の寺」とか変な名前付けられた。完全ランダムなのか、ユーザーの地域を加味しているのかはわからない。
「$ heroku logs -t」
開いているディレクトリのデプロイに関するログを確認できる。後述する「Herokuエラー時の対応方法・考え方」でも記入するが、Herokuデプロイ後のエラー時にこのコマンドを使用してエラーを確認する。あくまで「デプロイ後」の話。アセットプリコンパイルしてなくてデプロイがそもそもできてない等、「デプロイ前」のログはこのコマンドでは確認できない。このログをPCのフルウィンドウで確認すると、まるでパソコンがぶっ壊れたんじゃないか、っていうような画面になる。プログラミングしてる感がやたら出る。プログラミングしてる感を出したい方は、是非スタバでマックを開き、「heroku logs -t」をターミナルに打ち込んで、ものすごい考えてる素振りをしていただきたい。きっと周りのJKに「すごい人だ」と思わせることに成功するだろう。
「$ heroku run rails console」
Herokuアプリ内でrailsコンソールを開きたいときに使うコマンド。基本的にrailsコンソールを使うときと同じ要領で使用できる。Herokuにアクセスしているためか、体感ちょっと重く感じる。使いどころがいまいちわからなかったが、今回オリジナルアプリ開発でデプロイした際に、デプロイ後のHerokuアプリのDBの中身を確認する必要があり、初めて使用。エラー時の原因探りで使うのかなという初心者の感想。
「$ heroku restart」
Herokuサーバーを再起動することができるコマンド。何か不具合が起きたときや、エラーデバッグ時にとりあえず入力してみるやつ。意味があるかはわからない。
「$ heroku pg:reset DATABASE」
Herokuアプリのデータベースをリセットするときに使用する。今回のオリジナルアプリ「免許問題集」はcsvファイルで免許の問題を読み込む予定のため、きっとこのコマンドを使って一旦DBをリセットすることになるだろうという予測のもと、備忘録として記載。
「$ heroku rake db:seed」
Herokuアプリのデータベースに対してシードデータを読み込ませるためのコマンド。これをしないとシードデータとしてあげたcsvファイルを読み込んでくれない。Herokuへのpushと、DB関係(マイグレーションやデータ挿入)は別物として考えないといけない。それぞれ別対応する必要がある。これも僕の備忘録です。
Herokuエラー時の対応方法・考え方
Herokuでのエラー時はとりあえず「$ heroku logs -t」でログを確認します。
上のような画面になります。
大事なのはエラーの箇所です。基本的にほとんど無視して大丈夫です。
Macだったら「command + F」のショートカットキーで検索バーを出し、「error」と入力し検索してください。エラーがあった場合、何箇所が発見できると思います。
注目すべきはその「error」と書いてある周りの記述だけです。おそらく近くに「FATAL」と言う文字があると思います。そこの周辺をチェックすると、エラーの原因のヒントが必ず書いてあります。(スクショを準備できなくてすみません。)
エラーのヒントから心当たりがないか思い出して見てください。
何か出てくると思います。何も出てこなければGoogleでエラーコードを直接検索してみてください。また何か心当たりが出てくるはずです。諦めるのはそこまでやってからだと思います。
まとめ
オリジナルアプリをデプロイするのに久しぶりにHerokuを使ったので、今回はこのまとめにしました。
ここに書いてある方法で、ある程度のエラーは自己解決できると思います。結局自分でめっちゃ調べる必要がありますが。
まだまだ色々便利なコマンドがあるのかもしれませんが、僕の知ってるコマンドは今のところこれくらいです。
何か良いコマンドあったら教えてください。
以上ありがとうございました。
こんにちは
herokuは git push heroku masterで
heroku側でprecompileしてくれますので
なくても動きます。
ご教授ありがとうございます、訂正させていただきます!