5
在我的Rails應用程序中,當我使用delayed_job創建後臺作業時,所有時間都偏移了6個小時。爲什麼在delayed_job中關閉時區?
我的理解是delayed_job uses your timezone,但它就像是使用了錯誤的。而不是從UTC的-6小時(CST是我的時區),它是-12小時!
下面是一些視圖代碼來說明。注:
- Time.now給2014年3月4日23時26分55秒-0600
- Time.now.utc給2014年3月5日5時26分55秒UTC
- 但短短几秒鐘的delayed_job的想法前是2014年3月4日17時26分53秒-0600
我的六EW:
#delayed_jobs/index.html.erb
<h1>All Background Jobs</h1>
<p>The time now is: <%= Time.now %> </p>
<p>The time UTC is: <%= Time.now.utc %> </p>
<table>
<tr>
<th>ID</th>
<th>Queue</th>
<th>Created At</th>
<th>Run At</th>
</tr>
<% @delayed_jobs.each do |dj| %>
<tr>
<td><%= dj.id %></td>
<td><%= dj.queue %></td>
<td><%= dj.created_at %></td>
<td><%= dj.run_at %></td>
</tr>
<% end %>
</table>
輸出:
我可以創造就業機會,任何這三種方式,並會得到相同的created_at時間:
MyClass.delay.foo
MyClass.delay(run_at: 0.minutes.from_now).foo
MyClass.delay(run_at: 0.minutes.from_now.getutc).foo
我的配置有:
#config/application.rb
config.time_zone = 'Central Time (US & Canada)'
config.active_record.default_timezone = 'Central Time (US & Canada)'
在你的config/application.rb中,你碰巧設置了:config.time_zone ='Central Time(US&Canada)'?如果,請嘗試將其設置爲UTC或僅將其註釋掉。 – rainkinz
奇數。只設置config.active_record.default_timezone會使delayed_job正確,但不適用於任何其他活動記錄對象。 –
謝謝!這使我走上了尋求解決方案的道路。 –