2011-02-04 5 views
1

掃除機とキャッシングの問題があります。掃除機が呼び出されたときに、Railsはキャッシュ/ .htmlページを削除していません

/cache内の.htmlファイルが最初のビューで生成されています。

必要に応じてSweeperアクションが呼び出されています。

しかし、スイーパーアクションは/キャッシュ

次のコードから.htmlのページを削除されていませんが、私の/コントローラおよび/スイーパーディレクトリからストリップダウンされます。 putsは両方ともログを記録するので、私たちは正常に実行されていることを知っています - 期限切れコマンドはファイルを削除していないようです。

誰かが私が嘘をつくことができるアイデアを持っていますか?

class WidgetsController < ApplicationController 
    cache_sweeper :widget_sweeper 
    caches_page :help 
    def help 
     render :template => '/widgets/help.html' 
    end 
end 

class WidgetSweeper < ActionController::Caching::Sweeper 
    observe HelpPage 
    def after_save(record) 
     puts "record " 
     puts record.inspect 
     expire_page(:controller => 'widgets', :action => 'help') 
     puts "ok!" 
    end 
end 
+0

私は少し奇妙だと思います。あなたはモデルを観察するはずです。あなたのモデルはHelpPageという名前ですか? – apneadiving

+0

モデルの名前を変更し、いくつかの要素を明確にしました。私はafter_saveに行ったことを説明したかっただけですが、expire_pageは機能しません。私もexpire_page( '/ widgets/help')を試しました –

+0

HTMLページに渡されるパラメータはありますか?たとえば、/ widgets/help?param = 234?また、キャッシュされたページがウィジェット/ help.htmlとして保存されていて、別の名前ではないことを確認しましたか? –

答えて

0

コンソールのヘルプページのレコードを操作するだけでテストできますか?コントローラの変更に影響を与えなければならないようです。

上記のコードを使用してテストアプリケーションを作成し、キャッシュを有効にして実行しました。私はレールコンソールにいくつかの新しいHelpPageレコードを作成しました.2つのログメッセージがありますが、ページの有効期限はありません。

ただし、コントローラに新しいヘルプページを作成したとき、ページの有効期限が予想通りに取得されました。

関連する問題