キャッシュが機能していることを確認する方法はよくわかりませんが、そうではないことは確かです。新しいユーザーが作成されるまでアクションをキャッシュするインデックス アクションを持つユーザー コントローラーがあります。コードは次のとおりです。
UsersController < ApplicationController
caches_action :index
def index
@users = User.all
end
def create
expires_action :index
...
end
end
index
アクションにアクセスすると、ログに次のように表示されます。
Cached fragment hit: views/localhost:3000/users (0.0ms)
Filter chain halted as [#<ActionController::Filters::AroundFilter:0xe2fbd3 @identifier=nil, @kind=:filter, @options={:only=>#<Set: {"index", "new"}>, :if=>nil, :unless=>nil}, @method=#<Proc:0x186cb11@/Users/bradrobertson/.rvm/gems/jruby-1.5.3/gems/actionpack-2.3.10/lib/action_controller/caching/actions.rb:64>>] did_not_yield.
が何なのかよくわかりませんし、毎回 ... が呼び出されてfilter chain halted ... did_not_yield
いることもわかりますが、これは私が期待したものではありません。select * from users
ここで何が起こっているのか、なぜこれが期待どおりに動作しないのかについて誰かが教えてくれますか? すなわち。そのアクションの出力全体がキャッシュされているはずなのに、なぜ User.all が実行されるのでしょうか?