Ruby on Railsの勉強 少々はまる
結論
Herokuなどにdeployするときは、事前に rake assets:precompile
を行ってからdeployをする。
もしくは、ソース編集した後に bundle install してからdeployする。
何が起きたか?
Herokuにdeployしたら、「the page you were looking for doesn't exist.」と言う画面が出ました。
つまり404、表示するものが無いってことです。
ローカル(AWS cloud9)では、この現象が発生しません。
アセットパイプライン
色々と検索すると、アセットパイプラインというのが影響しているのが解る。
railsguides.jp
アセットパイプラインの第一の機能はアセットを連結することです。これにより、ブラウザがWebページをレンダリングするためのリクエスト数を減らすことができます。Webブラウザが同時に処理できるリクエスト数には限りがあるため、同時リクエスト数を減らすことができればその分読み込みが高速になります。
要するに、jsとかcssが、一つのファイルにまとめられており、サーバーで動作するときは、プリコンパイルされたファイルを読むことなる。
Herokuはproduction設定としてあるので、この条件に合致する。
しかし、最初の勉強の時は、引っかからなかった、それはなぜか?
kawahara-ci.hatenablog.com
手順を振り返る
第1章の時は、以下の順番で作業をしています。
- gemファイル編集
- bundle install
- rails server
- ソース編集
- gemファイル再編集
- bundle install --without production
- Herokuにdeploy
はまった時は、以下の順番で作業をしています。
- gemファイル編集
- bundle install --without production
- ソース編集
- Herokuにdeploy
なるほど!第1章の時は、ソース編集後に、 bundle install をしている!
だから、はまらなかった訳です。
deployする前に、 bundle install をすれば、いいんじゃないと思ったけど、問題はアセットパイプラインがプリコンパイルされていないだけなので、rake assets:precompile するのが正しいです。
Ruby on Rails 5アプリケーションプログラミング
- 作者:山田 祥寛
- 発売日: 2017/04/14
- メディア: 大型本
たった1日で基本が身に付く! Ruby on Rails 超入門
- 作者:WINGSプロジェクト 竹馬 力
- 発売日: 2018/03/09
- メディア: 大型本
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者:伊藤 淳一
- 発売日: 2017/11/25
- メディア: 大型本