1

我在使用 Rails 中的 Sweepers 和缓存时遇到了一些问题。

/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 记录,我得到了两条日志消息,但没有页面过期。

但是,当我在控制器中创建一个新的 HelpPage 时,我确实得到了预期的页面过期。

于 2011-02-05T00:50:33.227 回答