gpt4 book ai didi

ruby-on-rails - 如何从 rake 任务中调用 Rails 缓存清扫器?

转载 作者:行者123 更新时间:2023-12-02 05:18:24 24 4
gpt4 key购买 nike

我设置了一个 Rails 缓存清扫器,如下所示:

class ArticleSweeper < ActionController::Caching::Sweeper
observe Article

def sweep(article)
expire_page articles_path
expire_page author_path(article.author)
FileUtils.rm_rf "#{page_cache_directory}/articles/page"
end

alias_method :after_update, :sweep
alias_method :after_create, :sweep
end

我将这个缓存清扫器与文章 Controller 连接起来。

缓存清除是创建和更新 Controller 操作的结果。

但是,我更新数据库记录的主要方式是通过 rake 任务,它在数据库记录上使用 save、update_attributes 等事件记录方法。

我想过加一个model observer类,让这个类调用sweeper方法。网上有很多关于应该如何通过模型操作而不是 Controller 操作来触发缓存清扫器的评论。

但是对于我的应用程序,rake 任务在执行时可能会添加 100 条记录。所以我不希望缓存清扫器执行 100 次。因为它不会有效率。

我认为最好在rake任务结束时执行一次。

所以我尝试在我的 rake 任务中添加这个:

ArticleSweeper.instance.sweep(Article.last)

我在那里放了一个“调试器”语句,然后看到正在执行 sweep() 方法。但是,缓存文件不会被删除,即使相同的代码在由 Controller 操作触发时仍然有效。

所以我的问题是:是否可以从 rake 任务中触发缓存清扫器方法?如果是这样,我该怎么做才能让它发挥作用?

谢谢

最佳答案

关于ruby-on-rails - 如何从 rake 任务中调用 Rails 缓存清扫器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com