1

Rails の Sweeper とキャッシングに問題があります。

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

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

ただし、スイーパー アクションは /cache から .html ページを削除していません。

以下のコードは、私の /controllers および /sweepers ディレクトリから取り除かれています。両方のputs行がログに記録されているので、正常に実行されていることがわかります.expireコマンドはファイルを削除していないようです.

誰でも私がどこで笑えるか考えていますか?

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
4

1 に答える 1

0

コンソールでいくつかの HelpPage レコードを操作して、これをテストしているだけですか? コントローラーの変更に影響を与える必要があるようです。

上記で提供されたコードを使用してテストアプリを作成し、キャッシュを有効にして実行しました。Rails コンソールで新しい HelpPage レコードを作成したところ、2 つのログ メッセージが表示されましたが、ページの有効期限はありませんでした。

ただし、コントローラーで新しい HelpPage を作成すると、期待どおりにページの有効期限が切れました。

于 2011-02-05T00:50:33.227 に答える