アセットのプリコンパイル
アセット
https://wa3.i-3-i.info/word18324.html
「資産」、「財産」といった意味合いの言葉。リソースで良いじゃんと思った。
別にIT用語というわけではないらしい。
railsでは意味をさらに絞ってCSS,JavaScriptなどの静的なファイルに限定しているような感じがします。Ruby on Rails プリコンパイル という言葉の定義は?
コンパイル
https://wa3.i-3-i.info/word186.html
プログラムを作るとき、
まず、人間の言葉でプログラムの元ネタ(ソースコード)を書く。
しかし、機械は人間の言葉がわからないので書いたソースコードを機械語に翻訳する作業が必要になってくる。この作業をコンパイルと言う。
つまりコンパイルとは、ソースコードをバイナリコードに変換する作業と言える。
では、プリコンパイルとは?
プリコンパイルで検索すると、「プリコンパイラ」みたいな言葉が多く出てきた。
「事前に(pre)」コンパイルを行うってことですね。 コンパイルというのは、この場面では、CoffeeScriptとか、SCSSとか、ブラウザが直接は読めない形式のファイルを、JSやCSSに変換してあげるということです。
↑Ruby on Rails プリコンパイル という言葉の定義は?
↓
何に対して「事前」かというと、「rails serverが走るよりも前」ということです。Rubyはインタープリター方式の言語で、物事を解釈しながら進むのですが、アセットパイプラインは、最初に一気にやってしまうわけですね。precompileをかけない状態でサーバーをproductionモードで起動すると、JSやCSSが存在せず、エラーになってしまいます。
プリコンパイルとは
コンパイラが言語の翻訳ができるように、事前に準備することです。コンパイラに翻訳をお願いする前に、もっとコンピュータの分かりやすい言語にしてあげることです。
他のマニフェストや、個別のスタイルシート/JavaScriptファイルをインクルードしたい場合は、config/initializers/assets.rbのprecompileという配列を使う。
application以外のマニフェストファイルを個別に読み込みたい場合はプリコンパイルの設定をしないと、ファイルが対象外とされエラーが出てしまうらしい。
# コメントアウトされているのでシャープを外す Rails.application.config.assets.precompile += %w( admin.js admin.css )
宣言したら(decleared)サーバーを再起動する。