Rails 2.0・その8(javascriptファイルやcssファイルをひとまとめに)
流行りのAJAXやscriptaculousなどの外部のcssデザインファイルなどを使うとなると、jsファイルとcssファイルの数がやたら増えて、一つのページなのに100回もwebサーバーにアクセスしにいく、という事態が考えられます。
それを防止するのに、jsファイルやcssファイルをひとまとめにしてしまおう、というスゴイ機能ができました。
javascript_include_tag や stylesheet_link_tag の :cache を使えばよいのでした。
書き方の例
app/views/honyarara の honyarara.html.erb に、
<%= javascript_include_tag(:all, :cache => true) %>
と書きますと、
public/javascript ディレクトリに、all.js というファイルが出来ます。
このファイル、public/javascript ディレクトリの中にあったjsファイルを全て連結した1つのファイルとなっております。
<script src="/javascripts/all.js?1199936410" type="text/javascript"></script>
ページでは、この all.js だけを読み込む script タグができあがります。他の js ファイルは読み込まれません。
と、ここまでが基本編で、あとは応用編ということで・・・
■perform_caching = true じゃないとこの機能が動かない
config/environments/(development|test|production).rb ファイルの
config.action_controller.perform_caching
が、true じゃあないと、この機能が動きませんのでご注意を。
デフォルトでは、production.rb だけが true になっていて、development.rb と test.rb は false になっているはずなので、
script/server -e production
で試せば、この機能を体験できます。
■all.js じゃなくて違う js ファイル名を指定できる。
:cache の値を変えれば、js ファイル名をカスタマイズすることができます。
例
<%= javascript_include_tag(:all, :cache => 'mycache') %>
は mycache.js というファイルができあがります。
例
<%= javascript_include_tag(:all, :cache => 'cache/mycache') %>
は public/javascipt/cache というディレクトリを作って、その中に mycache.js というファイルを作ります。
■べつに全部をまとめたい訳じゃないMy Mother(=わがまま)な人へ
まとめたい js ファイルだけを指定することもできます。
例
<%= javascript_include_tag('prototype', 'urchin', 'choochootrain', :cache => true) %>
■cache 用のファイルは自動的に消去されないし更新されない(と思う←自信なし)
上のやり方でめでたくキャッシュファイルが作成されたとして、で、prototype.js あたりが更新されたのでキャッシュファイルも更新したい、なんていう場合に、rails は自動的に更新してくれません(と思います)。
なので、手動でall.jsのようなキャッシュファイルを消して、Webサーバを再起動して、みたいなことをしなければならないです。これについてどなたかからアドバイスが欲しいなあ。
■stylesheet も同じようなやり方でファイルを1つにまとめられる
例
<%= stylesheet_link_tag(:all, :cache => true) %>
と書きますと、
<link href="/stylesheets/all.css" media="screen" rel="stylesheet" type="text/css" />
ができあがりますとさ。
【広告】
それを防止するのに、jsファイルやcssファイルをひとまとめにしてしまおう、というスゴイ機能ができました。
javascript_include_tag や stylesheet_link_tag の :cache を使えばよいのでした。
書き方の例
app/views/honyarara の honyarara.html.erb に、
<%= javascript_include_tag(:all, :cache => true) %>
と書きますと、
public/javascript ディレクトリに、all.js というファイルが出来ます。
このファイル、public/javascript ディレクトリの中にあったjsファイルを全て連結した1つのファイルとなっております。
<script src="/javascripts/all.js?1199936410" type="text/javascript"></script>
ページでは、この all.js だけを読み込む script タグができあがります。他の js ファイルは読み込まれません。
と、ここまでが基本編で、あとは応用編ということで・・・
■perform_caching = true じゃないとこの機能が動かない
config/environments/(development|test|production).rb ファイルの
config.action_controller.perform_caching
が、true じゃあないと、この機能が動きませんのでご注意を。
デフォルトでは、production.rb だけが true になっていて、development.rb と test.rb は false になっているはずなので、
script/server -e production
で試せば、この機能を体験できます。
■all.js じゃなくて違う js ファイル名を指定できる。
:cache の値を変えれば、js ファイル名をカスタマイズすることができます。
例
<%= javascript_include_tag(:all, :cache => 'mycache') %>
は mycache.js というファイルができあがります。
例
<%= javascript_include_tag(:all, :cache => 'cache/mycache') %>
は public/javascipt/cache というディレクトリを作って、その中に mycache.js というファイルを作ります。
■べつに全部をまとめたい訳じゃないMy Mother(=わがまま)な人へ
まとめたい js ファイルだけを指定することもできます。
例
<%= javascript_include_tag('prototype', 'urchin', 'choochootrain', :cache => true) %>
■cache 用のファイルは自動的に消去されないし更新されない(と思う←自信なし)
上のやり方でめでたくキャッシュファイルが作成されたとして、で、prototype.js あたりが更新されたのでキャッシュファイルも更新したい、なんていう場合に、rails は自動的に更新してくれません(と思います)。
なので、手動でall.jsのようなキャッシュファイルを消して、Webサーバを再起動して、みたいなことをしなければならないです。これについてどなたかからアドバイスが欲しいなあ。
■stylesheet も同じようなやり方でファイルを1つにまとめられる
例
<%= stylesheet_link_tag(:all, :cache => true) %>
と書きますと、
<link href="/stylesheets/all.css" media="screen" rel="stylesheet" type="text/css" />
ができあがりますとさ。
【広告】