У меня есть код, который, кажется, выполняется неправильно, когда он сериализован и выполняется с delayed_job. Чтобы избавиться от необходимости, я использую Ubuntu 11.04, Ruby 1.8.7 с Rails 3.0.4.
В одной из моих таблиц есть поле даты и времени, в котором, очевидно, хранятся дата и время определенного события. В моем приложении RoR я использую это поле через приложение, вызывающее strftime для его форматирования различными способами. Вывод этого форматирования правильный на веб-странице.
Я также использую delayed_job, чтобы поместить это же поле в электронное письмо, которое отправляется (инициируется каким-либо действием). Когда приходит электронное письмо, кажется, что оно как-то отформатировано как GMT. Например, если в базе данных дата должна была быть 11-12-2011 15:30:00 (15:30 PM), сообщение электронной почты будет иметь вид 11-12-2011 22:30:00 (22:30). ).
Я заглянул в базу данных и нашел кое-что интересное:
Я получаю правильный вывод (местное, не по Гринвичу)
Mon Aug 15 10:15:27 -0600 2011
Когда я смотрю, что в сериализованном yaml для таблицы delayed_jobs, я вижу, что поле даты отформатировано как
2011-11-12 22:30:00 Z
В моем application.rb у меня есть
config.time_zone = 'Mountain Time (US & Canada)'
и в моем окружении .rb у меня есть
timezone = "Mountain Time (US & Canada)"
Может ли кто-нибудь помочь мне понять, что здесь происходит? Я относительно новичок в RoR, так что это может быть очень очевидный, легкий вопрос. Если вам нужна дополнительная отладочная информация, пожалуйста, дайте мне знать, и я могу опубликовать ее. Точно так же, если мой вопрос неясен, я могу попытаться уточнить