2012-05-05 2 views
2

Я пытаюсь настроить систему кеширования с использованием плагина Memcached с Rails 3.1 и dalli на стек кедра Heroku с множеством элементов, срок действия которых истекает в конце каждого дня.Memcached: expires_in на Heroku для кэширования фрагментов

Для этого я использую метод полезности:

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" 

Но это не истекающий в конце каждого дня, как это должно быть. Я также пробовал передавать количество секунд как целое число без секунд. Но это не имело никакого значения.

На данный момент я вернулся к запланированной задаче, которая работает ежедневно в 00:00 и очищает чувствительные к дневному времени элементы кеша, но я бы предпочел использовать исчерпывающий кеш-файл.

Любые идеи? Благодаря!

ответ

2

Чтобы правильно рассчитать время на Rails и Heroku, вам необходимо использовать Time и zone. Таким образом, вы хотите следующее.

Time.zone.now.end_of_day - Time.zone.now 
Смежные вопросы