Мне нужно хранить несколько периодов времени в файле YAML, как это:Почему `from_now` неправильно при вызове Fixnum?
test:
testing: <%= 1.month %>
Я захватить данные в инициализаторе так:
Class::TIMES = YAML.load(ERB.new(File.new(Rails.root.join('config', 'times.yml')).read).result)
До сих пор так хорошо. Но время, которое я получаю от этого, всегда отключается днем; тестирование показывает это. Например:
<Tue, 06 Mar 2012> expected but was <Wed, 07 Mar 2012>.
Тест линии:
assert_equal 1.month.from_now.to_date, @object.finished_at.to_date
В другом месте, finished_at @ объекта устанавливается следующим образом:
# duration is from the YAML file
self.finished_at = duration.from_now
Он всегда кажется, быть смещена на один день, независимо от того, какой период времени я вложил в файл YAML. Почему это происходит?
EDIT: Это, как представляется, проблема с Fixnums и from_now
:
> 1.month.from_now
=> Tue, 06 Mar 2012 21:05:00 UTC +00:00
> 1.month.to_i.from_now
=> Wed, 07 Mar 2012 21:05:05 UTC +00:00
Какой часовой пояс вы используете для тестирования? Вы должны использовать UTC для всех значений внутри себя и рендеринга в локальную часовую зону пользователя для отображения. – tadman
Они все UTC. Но я думаю, что нашел реальную проблему. Я отредактировал свой вопрос соответствующим образом. –