2

Rails 3.1 で Memcached プラグインを使用し、Heroku cedar スタックで dalli を使用してキャッシュ システムをセットアップしようとしています。

このために、私はユーティリティメソッドを使用しています:

def self.seconds_to_next_day
  ((DateTime.now.end_of_day - DateTime.now) * 24 * 60 * 60).to_i.seconds
end

そして、haml ビューで次のようにキャッシングします。

- cache "user_#{current_user.id}_my_groups", :expires_in => Utils.seconds_to_next_day do
  = render "shared/my_groups"

しかし、本来あるべきように、毎日の終わりに期限切れになるわけではありません。また、秒数を整数として .seconds なしで渡そうとしましたが、違いはありませんでした。

今のところ、私は毎日 00:00 に実行され、日によって区別されるキャッシュ項目をクリアするスケジュールされたタスクに戻りましたが、ネイティブ キャッシュの有効期限を使用する方がはるかに好きです。

何か案は?ありがとう!

4

1 に答える 1

2

Rails と Heroku で時間を正しく計算するには、時間とゾーンを適切に使用する必要があります。したがって、あなたが望むものは次のとおりです。

Time.zone.now.end_of_day - Time.zone.now
于 2012-05-05T04:18:03.690 に答える