A note of a person who is learning programming, SakaTaQ

ロック好きのプログラミング学習

Herokuにデプロイしたアプリの更新

前回デプロイしたアプリケーションについていくつか更新をしたのですが、GitHubにpushしても自動デプロイされてなかったので、アプリが停止している状態では更新されないのではとか、色々と解釈を間違えている部分があったのではないか、検索不足の部分があったのでは?ということで、少し調べてみました。

実際に行ったこと

とりあえずログイン

% heroku login

コマンドを叩いたら起きるのかな?とかまぁ分からんなりに打ってみる。

% heroku ps

プロセスの確認ができるコマンド。とりあえず現状は起動できているようでした。
f:id:saka20taku43:20200608141055p:plain 参考にさせていただいた記事
Herokuのアプリケーションの停止 / 再開
他にも自分でcurlコマンドを打って確認するなど方法があるようです。
何かあったらまた参考にしようかと。


で、自動でできないのであれば手動で行うか〜ということで

% git push heroku master

エラーが吐き出された。
f:id:saka20taku43:20200608141427p:plain なるほど、自動デプロイ自体は行われてたのだけど失敗して更新できてなかったというのがわかった。
GitHubのリンクに問題がないか念のため確認したのですが、Herokuのブラウザのアプリ各個ページのOverviewタブにてBuild failed/Yesterday at 〜となっていたことから、昨日のタイミングで失敗して更新できてないことも分かった。

で、エラーが最初に返された(と思っていた)Precompiling assets failed.について検索。
参考にさせていただいた記事 Herokuにpushしたらprecompile assets faild.が。pushできたと思ったらApplication Errorが。解決するまで。

こちらにあるようなcss関連については全てscssで統一していた為、問題ないというのは分かっていたのですが、読み進めていたらエラ〜ログのずっと前にエラーが出ていた部分があるようなので、自分も確認してみました。
f:id:saka20taku43:20200608143012p:plain
完全に見逃していました。ES6っていうのがJavaScriptのバージョンというのは分かるけど、何が関係あるのと思って再びググる君。

参考にさせていただいた記事 【Rails】ES6が原因でHerokuへのデプロイ失敗 Uglifier::Error: Unexpected token:~
最初の方にサクッと書いてくれてます。 ようは、ES6から使えるletを記述すると自動的にES6のバージョンとみなされ、そのES6はUglifierというgemはES5までしか対応してないのでエラーが返っている状態とのことでした。

サイトにあるように環境設定ファイルを変えるか、今回の僕のアプリのようにletを使っている場所が少なかったり、規模が小さい物ならそのコード自体を書き換えることで対応できました。
書き換えて、GitHubにpushしてみた所、そのままHeroku Appに自動でデプロイがされたのが確認できました。
今回の更新ではDB情報を少し書き換えたものがデプロイされてるので、

% heroku run rake db:migrate:status

で、Heroku上のアプリケーションのマイグレーションファイルの状況の確認。
f:id:saka20taku43:20200608144534p:plain

% heroku run rake db:migrate

// 問題なく移行完了、一応確認
% heroku run rake db:migrate:status

f:id:saka20taku43:20200608150716p:plain

// 一通り終わったらログアウトしておく
% heroku logout

とりあえず今回はこれだけ!

したらな❗️ 👋