圧縮・結合また、production環境では通信コストの軽減などの目的のため、予め圧縮・結合しておいたアセットを配置するのが一般的。プリコンパイルは下記コマンドで実行できる。assets:precompileこのコマンドにより、public/assets/以下に圧縮・結合されたアセットが配置される。この処理はプリコンパイルと呼ばれ、大抵デプロイ時に実行される。"public/assets/"に配置されたプリコンパイルされたアセットは静的ファイルとして提供される。これでリクエスト毎にいちいちコンパイルをしなくて済み、サーバ負荷が軽減される。このプリコンパイルされたファイルのレスポンスもSprocketsがやってくれる。具体的にはproduction環境のコンテキストでstylesheet_link_tagが解釈されると、プリコンパイルされたファイルへのlinkタグを出力してくれる。この振る舞いは"config/environments/development.rb"などで設定されているconfig.assets.compileによる。この値がfalseだと前述したようなプリコンパイルされたアセットを静的ファイルとして参照、trueだと、リクエスト毎に動的にコンパイルを行う。productionではfalse、developmentだとtrueが既定値となっている。development環境でもリクエスト毎に動的にコンパイルを行いたい場合は以下のように設定する。jQueryを利用したJavascriptを書いている場合は、先にjQueryを読み込んでおかないと動かないので、このようなコードはjQueryに依存していると言える。このようなアセットファイル間で発生する依存性の解消は、requireディレクティブで解決する。jQueryを読み込むには下記のように記載する。jqueryrequireの他にも、指定されたディレクトリを再帰的に読み込むrequire_treeや指定されたファイルがrequireされた場合に無視するstubなどの複数のディレクトリがある。application.cssやapplication.jsなどでこれらのディレクティブの記載が見られる。前述したように、production環境ではアセットは結合して配置するのが一般的である。この際アセット結合の仲介役となるようなファイルのことをマニフェストファイルといい、マニフェストファイルにはそのアプリでの全ての依存関係を示したディレクティブを記述する。Sprocketsでは規約として、"application.css"、"application.js"という名前のファイル名がマニフェストファイルとして読み込まれるようになっている。上記以外のファイルをプリコンパイルの対象としたいなら、"confg/environments/production.rb"などで以下のように指定する必要がある。admin.css)production環境ではstylesheet_link_tagやjavascript_include_tagヘルパーは、プリコンパイルされたアセットへのリンクを出力する。development環境ではマニフェストファイルのディレクティブで解決された依存関係の順番にlinkタグやscriptタグで個別のファイルを展開していく。trueで制御されている。これがfalseなら前述した個別のファイルに展開する方式になり、trueならファイルは結合される。前者はdevelopment環境の既定値で、後者はproductionの既定値。developmentでも下記のように設定することでファイルの結合を行うようにすることができる。trueコンパイル例えば、CoffeeScriptなどのaltJSを利用している場合でもSprocketsがコンパイルしてくれる。コンパイル処理自体は外部のコンパイラに移譲しているらしいのでそれらとファイルとの橋渡しをしてくれている。Sprocketsはほとんどの場合、execJSインターフェースを経由してJSの実行環境を使いコンパイラを呼び出しているに過ぎません。Qiitaとりあえずここまで。コメントをキャンセルメールアドレスが公開されることはありません。下記コマンドでインストール。あることだけど、表題の通り。あることだけど、表題の通り。統計学の本読んでるけど公式よりコードの方が頭に入る。WEBサービスを作ったり保守したりしてる人のメモブログです。