Heroku で RoR アプリを実行しています。私のコントローラーでは、次のような単純な caches_action ステートメントを実行しています。
caches_action :index, :expires_in => 5.minutes
def index
@articles = Article.main.paginate(:page => params[:page], :per_page => 10)
....
end
Article モデルでは、次のようなスコープ ステートメントを使用して、公開日に基づいてアイテムが取得されます。
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
...そして、サイトに表示されていないものも含めて、正しい記事が返されました。
サーバーを完全に再起動するだけで、キャッシュがリセットされ、記事が表示されました。