6時だョ!!全員集合!!

Rails・JavaScrictを中心にアウトプットします。

2021年8月28日 現場Rails Chapter6-9 production環境でアプリケーションを立ち上げる

プリコンパイルとは

Railsにおけるプリコンパイルとは、あらかじめアセットパイプラインを実行して静的ファイルを生成しておくことを指します。

プリコンパイルされたファイルはpublic/assetsディレクトリの配下に配置されます。

上記における、「静的ファイル」と「プリコンパイルされたファイル」は同じで、application-asdkljahsoiueraqwrufga8923479q37f89qw4.jsのようなファイル名になります。

#プリコンパイルする
$ bin/rails assets:precompile

#プリコンパイル後に、public/aseets/配下のフォルダにプリコンパイルされたファイルが生成される。フォルダ内のファイルを確認。
$ ls public/assets/application-asdkljahsoiueraqwrufga8923479q37f89qw4.js

例)
100m走を行う場合、スタートの合図と同時に走り出せるように、着替えて靴をはいてスタートする姿勢までの準備をしておくのがプリコンパイルによるpublic配下にファイルが移動した状態です。しかし、これをしていないとスタートの合図がなってから着替えて靴を履くという準備が始まってしまう為に初動が遅れる事態になるから、本番環境ではプリコンパイルを行う必要があると考えられます。

開発環境ではデバッグのしやすさを考慮してプリコンパイルは行われません。

開発環境と本番環境におけるプリコンパイルの挙動の違い

開発環境ではコンパイル時にデフォルトでアセットの連結と最小化を行いません。これをサッカーの試合を例えると、ユニフォームを着ることで観客が視認出来るように配慮しますが、練習(開発環境)では背番号をつける必要は特にありません。汚れたら洗濯(デバッグ)する必要もでてきますし、着替える手間もあります。 プリコンパイルの実行は試合(本番環境)に備えてユニフォームを用意してコートに立つ準備を行うことを指します。

  # trueにするとAssetPipeLineが常に実行されるので、リクエストのたびに毎回毎回静的ファイルを生成してしまう。
  # 開発時には便利だがメモリを余分に消費したり、パフォーマンスが低下してしまう。
  config.assets.compile = false

参照

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 https://wa3.i-3-i.info/word16767.html

A visual guide to Webpacker
https://rossta.net/blog/visual-guide-to-webpacker.html

アセットのプリコンパイル https://railsguides.jp/asset_pipeline.html#%E3%82%A2%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E3%83%97%E3%83%AA%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%99%E3%82%8B