我有一个托管在 Heroku 上的 Rails 3 应用程序,针对 Postgres 数据库运行。我有一个控制器操作,它应该生成一个 RSS 提要,但我发现它在应用程序重新启动之前永远不会更新(要么是因为我对 Heroku 做了一个新版本,要么是因为该站点有一段时间处于非活动状态,所以测功机旋转下来并再次备份)。它正在返回不包括新项目的“陈旧”数据。
范围是这样定义的,基于我的模型上名为date
和的行之间的比较Date.current
:
class Petition < ActiveRecord::Base
scope :current, where(["petitions.date <= ?", Date.current]).order("petitions.date DESC")
scope :published, { :conditions => { :published => true } }
end
控制器动作是这样的:
class PetitionsController < ActionController::Base
before_filter :find_diary
def rss
current_petitions.each do |petition|
puts petition.date
end
end
protected
def find_diary
@diary = Diary.find(params[:id])
end
def current_petitions
@diary.petitions.published.current.limit(25)
end
end
如您所见,它应该以date
今天或更早的时间返回所有请愿书。它在 Heroku 控制台上运行良好:Diary.find(15).petitions.published.current.limit(25).first
今天总是给我一个。我可以从日志中看到,current_petitions
每次请求提要时它都会调用该函数。但是,如果我让网站运行 24 小时,那么直到昨天它仍然只显示我的请愿书。如果我发布一个版本来添加任何调试代码,它会突然重新开始工作。