2012-03-19 8 views
1

config/initializersにHAMLのカスタムエンジンを追加しました。開発モードでRails資産パイプラインによってアセットがキャッシュされないようにするにはどうすればよいですか?

私はhttp://127.0.0.1:3000/assets/page.htmlを訪問するとき、それが正常にページをレンダリングします。

# page.html.haml 

!!! 5 
%html{:lang => "en"} 
    %head 
    = stylesheet_link_tag 'application' 
    = javascript_include_tag 'application' 

問題は、Railsがhtmlアセットをキャッシュしているようです。 application.jsマニフェストからファイルを追加または削除すると、Railsサーバーを停止してrake tmp:clearを実行するまで更新されません。代わりにapplication.jsファイルに触れることもできます。 1つの大きなapplication.jsファイルではなく、Chrome DevToolsの個々のファイル/フォルダを表示する方が好きなので、config.assets.debug = trueが設定されています。

開発中に特定のアセットをキャッシュから除外する方法はありますか?

これを繰り返すと、HTMLがキャッシュされているため、マニフェストへの変更はhttp://127.0.0.1:3000/assets/application.jsに反映されます。

答えて

2

ブルートフォースソリューションは、HAMLファイルにいくつかのdepends_on属性を追加することです:

# page.html.haml 
#= depend_on application.js 
#= depend_on application.css 
!!! 5 
%html{:lang => "en"} 
    %head 
    = stylesheet_link_tag 'application' 
    = javascript_include_tag 'application' 

これはapplication.jsファイルが変更されたときに再生されるように、資産を強制すべきです。

これにはいくつかのキャビネットがあります。ファイル名は、ソースツリー内の名前でなければなりません。あなたのHAMLレンダラのコメントには#を使うことができると仮定しています(私はHAMLを知らないので、わかりません)。カスタムエンジンでのこの動作のしくみもわかりません。また、より良い解決策は、独自のHAMLエンジンの依存関係自体を追跡することですが、これを行う方法はわかりません。

詳細はsprockets docsを参照してください。

+0

ブリリアント!実際にこれを試してみましたが、 '// = depend_on'を使用したので動作しませんでした。私はちょうどHAMLのコメント構文が ' - #'であり、 ' - #depends_on application.js'がうまく動作することに気付きました。 – vaughan

関連する問題