Все через 2 дня после выхода 3.2.13

Хорошо, это должно быть самая странная проблема, связанная с рельсами. Это было доведено до моего сведения около месяца назад, когда некоторые из наших сотрудников начали замечать, что каждый раз, когда они вводят значение в поле даты и сохраняют, а затем возвращаются к нему, это всегда на 2 дня меньше того, что они сохранили. Это очень постоянная проблема. Я был бы в порядке, если бы это было просто веб-приложение. Но это начало происходить во ВСЕХ наших приложениях rails. Я проверил время сервера. Все они правильные. Правильная дата, год, время, часовой пояс и т. д. И что еще более странно, мы импортировали некоторые данные, и в поле даты указано «2013-04-15», однако при извлечении этой точной записи в рельсах отображается «2013-04». -13' ровно 2 выходных дня. (Даже без форматирования времени с помощью strftime) Это начинает сводить меня с ума. Единственный обходной путь, который у меня есть, - это взять значения и добавить 2.days, но это не повлияет на несколько веб-приложений. У кого-нибудь есть идеи, которые могли бы пролить свет на это.

*** Кстати, в режиме разработки этого не происходит.

********* Наконец-то нашел ответ после нескольких месяцев борьбы. Именно так я подключался к базе данных. Когда мы перешли на MSSQL 2012, я начал использовать нестандартный гем для подключения к SQL 2012, потому что стандарт не работал с нашей конфигурацией sql, поэтому я использовал гем. -> гем "jdbc-mssql-azure", "~> 0.0.1". По-видимому, где-то в этом геме есть ошибка, из-за которой даты отображаются на 2 дня назад независимо от значения SQL. Спасибо, ребята, за все комментарии и помощь. Также это может помочь людям в США использовать драгоценный камень «американский финик».


person user1579627    schedule 10.06.2013    source источник
comment
У вашего производственного сервера есть правильное время? Показывает правильную дату и время сегодня и сейчас?   -  person MrYoshiji    schedule 10.06.2013
comment
Да, на сервере правильное время (я проверял миллиард раз). И я бы увидел, что это происходит, может быть, на одном сервере, но это происходит на всех 4 наших серверах rails. Странно, что во всех трех дата смещена на 2 дня.   -  person user1579627    schedule 10.06.2013
comment
Вы проверили время вашего сервера БД? Если эти даты поступают из запросов, можете ли вы подтвердить в журналах, что дата, переданная в параметрах, верна? Можете ли вы запустить консоль в производственном режиме, создать фиктивную запись и воссоздать такое же поведение?   -  person PinnyM    schedule 10.06.2013
comment
@user1579627 user1579627 вы проверили время в своей базе данных?   -  person Paulo Fidalgo    schedule 10.06.2013
comment
Это может послужить вдохновением для отладки: infiniteundo.com/post/25326999628/< /а>   -  person Narfanator    schedule 10.06.2013
comment
# 12: Системные часы всегда будут установлены на время, которое не сильно отличается от правильного местного времени.   -  person Narfanator    schedule 10.06.2013
comment
Возможно ли, что данные вашего часового пояса повреждены. Вроде у вас часовой пояс UTC-48:00   -  person Martin M    schedule 11.06.2013
comment
Время базы данных правильное, я считаю, что часовой пояс правильный на всех машинах, включая код рельсов. Я нахожусь в часовом поясе EST, который составляет -5:00 по Гринвичу. Я еще раз все проверю, когда завтра поеду.   -  person user1579627    schedule 11.06.2013
comment
********* Наконец-то нашел ответ после нескольких месяцев борьбы. Именно так я подключался к базе данных. Когда мы перешли на MSSQL 2012, я начал использовать нестандартный гем для подключения к SQL 2012, потому что стандарт не работал с нашей конфигурацией sql, поэтому я использовал гем. -› гем jdbc-mssql-azure, ~› 0.0.1. По-видимому, где-то в этом геме есть ошибка, из-за которой даты отображаются на 2 дня назад независимо от значения SQL. Спасибо, ребята, за все комментарии и помощь.   -  person user1579627    schedule 14.08.2013


Ответы (1)


Немного сложно опубликовать ответ, когда у нас нет дополнительной информации.

Если время сервера и базы данных правильное и оно не происходит в режиме разработки, я бы сказал, что проблема заключается в файле environment/production.rb.

Эти две настройки, в частности, могут вызвать проблемы со временем.

config.time_zone                      #sets the default time zone 
                                      #for the application and enables
                                      #time zone awareness for Active Record.

config.active_record.default_timezone #default is :utc 
person Andreas Lyngstad    schedule 11.06.2013
comment
********* Наконец-то нашел ответ после нескольких месяцев борьбы. Именно так я подключался к базе данных. Когда мы перешли на MSSQL 2012, я начал использовать нестандартный гем для подключения к SQL 2012, потому что стандарт не работал с нашей конфигурацией sql, поэтому я использовал гем. -› гем jdbc-mssql-azure, ~› 0.0.1. По-видимому, где-то в этом геме есть ошибка, из-за которой даты отображаются на 2 дня назад независимо от значения SQL. Спасибо, ребята, за все комментарии и помощь. - person user1579627; 14.08.2013