Railsはまりポイント:productionモードでの「all.css」と「all.js」

2012/02/17

Rails2.0以降、下記のように

    
<%= stylesheet_link_tag "default.css", :cache => true %>
  

stylesheet_link_tag を記述する際に「:cache => true」のオプションを付けると、public/stylesheets 以下に「:cache => true」を設定したcss全てをひとまとめにした

all.css

というファイルが生成され、あわせて下記のような

    
<link href="/stylesheets/all.css" media="screen" rel="stylesheet" type="text/css" />
  

all.css を読み込む link タグが代わりに生成される機能があります。これにより複数のcssファイルをリクエストする必要がなくなるため、ページ表示が速くなります。この機能は、productionモードではデフォルトで有効になっています。

同様に、Javascript の場合にも javascript_include_tag に「:cache => true」のオプションを付けると、

all.js

が生成され、そちらを読み込むようにしてくれます。

しかし、この「all.css」と「all.js」ですが、PassengerやApacheを再起動しても、消えることはなく残ったままになっています。また、一度生成されると自動で再生成されることもありません。

従って、関連するcssやjsファイルを修正しても、先に生成されていた「all.css」「all.js」が残っていると、修正内容は反映されないことになりますので、ファイルを手動で削除する必要があります。

この挙動を知らないと、なぜか修正が反映されずはまりまくることとなりますので要注意です。

なお、config/environments/production.rb の下記をfalseに設定することで、上記機能をoffにもできます。

config/environments/production.rb
    
config.action_controller.perform_caching = true
  

コメント(0 件)

コメントの投稿

※必須入力です。
※入力いただいた場合、コメント欄からリンクされます。

※必須入力です。HTMLタグは使用できません。