Rails Diary

プログラミングの学習記録です。

アセットのプリコンパイル

アセット

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が存在せず、エラーになってしまいます。

コンパイルの流れをざっくり掴んでいく - Qiita

プリコンパイルとは
コンパイラが言語の翻訳ができるように、事前に準備することです。コンパイラに翻訳をお願いする前に、もっとコンピュータの分かりやすい言語にしてあげることです。

4.1 アセットをプリコンパイルする | Railsガイド

他のマニフェストや、個別のスタイルシート/JavaScriptファイルをインクルードしたい場合は、config/initializers/assets.rbのprecompileという配列を使う。

f:id:okmt_Aya_26:20220308192655p:plain

application以外のマニフェストファイルを個別に読み込みたい場合はプリコンパイルの設定をしないと、ファイルが対象外とされエラーが出てしまうらしい。

# コメントアウトされているのでシャープを外す
Rails.application.config.assets.precompile += %w( admin.js admin.css )

宣言したら(decleared)サーバーを再起動する。