Всичко е 2 дни извън релсите 3.2.13

Добре, това трябва да е най-странният проблем, свързан с релсите. Беше обърнато на вниманието ми преди около месец, когато някои от нашите служители започнаха да забелязват, че всеки път, когато въведете стойност в поле за дата и запишете, след което по-късно се върнете към нея, тя винаги изостава с 2 дни от това, което са записали. Това е много последователен проблем. Щях да се оправя, ако беше само това уеб приложение. Но това започна да се случва във ВСИЧКИ наши rail приложения. Проверих времето на сървъра. Всички те са правилни. Правилна дата, година, час, часова зона и т.н. И което е още по-странно е, че импортирахме някои данни и полето за дата казва „2013-04-15“, но при изтегляне на този точен запис в релсите се казва „2013-04 -13' точно 2 почивни дни. (Дори без форматиране на часа със strftime) Това започва да ме подлудява. Единствената работа, която имам, е да взема стойностите и да добавя 2.days, но това няма да го прекъсне в няколко уеб приложения. Някой има ли някакви идеи, които биха могли да хвърлят светлина върху това.

***Като странична бележка, това не се случва в режим на разработка.

********* Най-накрая намерих отговора след месеци на борба. Така се свързвах с базата данни. Когато преминахме към MSSQL 2012, започнах да използвам нестандартен gem, за да се свържа с SQL 2012, защото стандартът не работеше с нашата sql конфигурация, така че използвах gem. -> gem "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
Проверихте ли времето на db сървъра си? Ако тези дати идват от заявки, можете ли да потвърдите в регистрационните файлове, че датата, подадена в params, е правилна? Можете ли да стартирате конзолата в производствен режим, да създадете фиктивен запис и да пресъздадете същото поведение?   -  person PinnyM    schedule 10.06.2013
comment
@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 GMT. Ще проверя отново всичко, когато вляза утре.   -  person user1579627    schedule 11.06.2013
comment
********* Най-накрая намерих отговора след месеци на борба. Така се свързвах с базата данни. Когато преминахме към MSSQL 2012, започнах да използвам нестандартен gem, за да се свържа с SQL 2012, защото стандартът не работеше с нашата sql конфигурация, така че използвах gem. -› gem 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, започнах да използвам нестандартен gem, за да се свържа с SQL 2012, защото стандартът не работеше с нашата sql конфигурация, така че използвах gem. -› gem jdbc-mssql-azure, ~› 0.0.1. Очевидно има грешка някъде в този скъпоценен камък, която кара датите да се изобразяват 2 дни назад, независимо от SQL стойността. Благодаря ви момчета за всички коментари и помощ. - person user1579627; 14.08.2013