0

Postgres データベースに対して実行される、Heroku でホストされている Rails 3 アプリがあります。RSS フィードを生成するはずのコントローラー アクションがありますが、アプリケーションが再起動するまで更新されないことがわかりました (Heroku に新しいリリースを行うため、またはサイトがしばらく非アクティブなため、dynoスピンダウンし、再びバックアップします)。新しいアイテムを除外する「古い」データを返しています。

スコープは、と呼ばれるモデルの行の比較に基づいて、次のように定義され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今日またはそれ以前の a を持つすべての請願を返すことになっています。Heroku コンソールでは問題なく動作Diary.find(15).petitions.published.current.limit(25).firstします。今日は常に 1 つ提供されます。ログからcurrent_petitions、フィードがリクエストされるたびにその関数が呼び出されていることがわかります。しかし、サイトを 24 時間稼働させたままにしておくと、昨日までの嘆願書しか表示されません。デバッグ コードを追加するためにリリースを行うと、突然再び機能し始めます。

4

1 に答える 1