2012-08-03 50 views
0

在我們的rails應用程序中,我們的環境文件中的時區設置爲UTC。這在我們的生產或登臺服務器上運行時不會造成任何問題。但是,我們的本地開發機器都沒有在系統時鐘中設置爲UTC,這在比較日期時會導致一些測試失敗。這是因爲當我們調用DateTime.now時,Rails使用UTC,因爲我們的MySQL數據庫正在使用系統時間(在我的情況下是CST)。Rails:確保datetime使用系統時間

有沒有辦法確保在某些情況下,DateTime.now不使用UTC時區?我想我要求的是更新日期字段的純SQL方式,它繞過了Rails引擎。

回答

0

其實你應該能夠告訴Rails只爲development和其他環境中,如test使用本地設置中添加此相應config/environments文件:

config.time_zone = "Eastern Time (US & Canada)" #Change this 
config.active_record.time_zone_aware_attributes = false 
config.active_record.default_timezone = :local 

這爲我工作,但我切換一切,包括生產到當地時間。但我不明白爲什麼這種方法不適用於每個環境!

+0

這種方法唯一的問題是,我們的開發團隊分散在不同的時區,我們必須找出一種方法來保持git在每次提交時都不會覆蓋環境文件。 – 2012-08-03 13:46:36

+0

有意思......我會在配置/初始化程序中定義常量的文件,即在.gitignore中。不知道你是否可以從配置/環境中訪問初始化器中定義的常量,儘管...取決於哪個先加載 – 2012-08-03 13:50:45