我有一个在 Heroku 上运行的 RoR 应用程序。在我的控制器中,我运行了简单的 caches_action 语句,例如:
caches_action :index, :expires_in => 5.minutes
def index
@articles = Article.main.paginate(:page => params[:page], :per_page => 10)
....
end
在文章模型中,项目是根据其发布日期使用范围声明检索的,如下所示:
scope :before, lambda{|timenow| {:conditions => ["time <= ?", timenow]}}
scope :published, where(:published => true).order("time DESC")
scope :main, before(Time.now).published
即使我将 caches_action 设置为 5 分钟,我仍然必须进入并手动清除缓存,以便今天的文章显示在列表的顶部,在它们应该上线几个小时后。Heroku 或 Rails 上是否有全局缓存设置我在某处丢失?
更多信息:
今天,当一篇新文章没有出现时,我尝试进入控制台并输入:
Rails.cache.clear
这没有效果。然后我尝试使用与索引控制器相同的 ActiveRecord 请求:
Article.main
...它返回了正确的文章,包括没有出现在网站上的文章。
只有重新启动服务器才能完全重置缓存并显示文章。