0

非常に気を散らすCache read: http://localhost:3000/assets/...ステートメントを私のRails development.logで静かにする方法を解明しようとしています。私に(私はRails 3.2上に)います。 SQL文の後に私の開発ログですべての私の資産のためのRails development.logの "キャッシュ読取り"文のサイレンシング

、および/は(まだ有用であり、私は維持したい)キャッシュのため断片を読み書きするには、キャッシュの長いリストがあり、すべてのJSのための文を読んで、CSS 、および要求されたページで使用されているイメージちょうど一握りを表示します

Cache read: http://localhost:3000/assets/jquery.atwho.css?body=1 
Cache read: http://localhost:3000/assets/jquery.selectric.css?body=1 
Cache read: http://localhost:3000/assets/font-awesome.css?body=1 
Cache read: http://localhost:3000/assets/480.css?body=1 
Cache read: http://localhost:3000/assets/768.css?body=1 

another SO postで示唆されたように私はquiet_assets gemを使用していますが、それはこれらのに取り組んでいない文を「キャッシュ読み取り」。

config/environments/development.rbにログアウトしないように設定されていますか?おかげでみんな

はEDIT:ここには私development.rb設定(私は、関連するかもしれないものを含む)は次のとおりです。

config.consider_all_requests_local = true 

# cache store 
config.action_controller.perform_caching = true 
config.cache_store = :dalli_store, nil, { 
    value_max_bytes: 10485760, 
    compress: true 
} 
config.static_cache_control = "public, max-age=2592000" 

config.assets.compress = false 
config.assets.debug = true 
config.assets.logger = false 
+0

'development.rb'設定を表示できますか?私はログにそのような行が表示されないので、おそらくあなたのためにそれを引き起こすいくつかの設定があります。 – BoraMa

+0

@BoraMaよろしくお願いします。 'development.rb'を表示するように私の質問を更新しました。 – DelPiero

答えて

1

行がDalliキャッシュバックエンドから来ている「キャッシュを読んで」とそれらはDalliキャッシュストアへのすべてのアクセスに対して表示されます。

# config/initializers/dalli_assets_silencer.rb: 
module ActiveSupport 
    module Cache 
    class DalliStore 

     private 

     alias_method :orig_log, :log 

     # silences "Cache read ..." etc debug lines for assets, but allows all others 
     def log(operation, key, options=nil) 
     return if key.to_s.include?("/assets/") 
     orig_log(operation, key, options) 
     end 

    end 
    end 
end 

は初期化子がlog methodのを再定義:あなたは「資産」キーを扱うだけのアクセスのために、このデバッグ行を抑制したいが、まだ他の人がログインしている場合は、Railsの初期化子に猿パッチDalliになりますキーが"/assets/"文字列と一致しない場合にのみ、実際にキャッシュアクセスを記録するようにDalliストアを設定します。そうなった場合、再定義されたlogは何もしません。

+0

Brilliant、どうもありがとう!これは、 ''/cache/'/' 'で 'Cache read'文をすべて静かにしました。ある種のダイジェストのように見えるものは、まだ長いログ出力があります: 'Cache read:4930ce0c6ab3bcab1daa8f0d67791c6834742c7b'(しかしそれらの数十ものもの)。ログ呼び出しを調べたところ、 'operation'は':read'、 'key'はダイジェストです。 '4930ce0c6ab3bcab1daa8f0d67791c6834742c7b'。非資産キャッシュをそのまま残しながら、これらをフィルタリングする方法はないと思いますか? – DelPiero

+1

'log'オーバーライドメソッドでは、同じパターンを使用して無視するものと一致させることができます。この場合は正規表現です。例えば次のようなものです。 'return if key.to_s.include?("/assets/")|| key.to_s =〜/ [0-9a-f] {30、}/'これは30文字以上のアセットキーとダイジェストキーと一致する必要があります。 – BoraMa

関連する問題