2017-02-21 71 views
1

我想在Windows機器上安排一個每小時運行一次的作業,並使用rufus-scheduler。但是,由於下面解釋的時區錯誤,我無法繼續。Windows:Rufus:`ENV ['TZ'] ='Continent/City'Error

require 'rufus-scheduler' 

require 'rufus-scheduler' 
require 'tzinfo/data' 

ENV['TZ'] = 'Asia/Chennai' 

scheduler = Rufus::Scheduler::singleton 

scheduler.every '1h' do 
    # job here 
end 

我不斷拋出這個錯誤。

C:/Ruby22/lib/ruby/gems/2.2.0/gems/rufus-scheduler- 3.3.4/lib/rufus/scheduler/zotime.rb:41:in `initialize': cannot determine timezone from nil (etz:"Asia/India",tnz:"Asi",tzid:"constant") (ArgumentError) 
Try setting `ENV['TZ'] = 'Continent/City'` in your script (see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 
    from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rufus-scheduler- 3.3.4/lib/rufus/scheduler/zotime.rb:206:in `new' 
    from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rufus-scheduler- 3.3.4/lib/rufus/scheduler/zotime.rb:206:in `now' 
    from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rufus-scheduler-3.3.4/lib/rufus/scheduler.rb:561:in `start' 
    from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rufus-scheduler-3.3.4/lib/rufus/scheduler.rb:109:in `initialize' 
    from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rufus-scheduler-3.3.4/lib/rufus/scheduler.rb:116:in `new' 
    from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rufus-scheduler-3.3.4/lib/rufus/scheduler.rb:116:in `singleton' 
    from scheduler.rb:9:in `<main>' 

任何人都可以幫忙嗎?

+1

我在下一分鐘試過,但是我想等待一段時間來接受它。後來忘了。 現在完成:)感謝yu –

回答

1

根據錯誤消息中鏈接的維基百科文章,印度(以及IST)唯一有效的時區爲Asia/Kolkata

因此,如果您設置

ENV['TZ'] = 'Asia/Kolkata' 

你應該得到正確的時區。

也就是說,設置您的操作系統以首先設置正確的本地時區可能是一個好主意。這使得其他軟件可以正常工作,而無需單獨爲每個軟件配置特定的時區。

+0

嘿,感謝您的信息,我的操作系統有正確的時區設置。我試過你的代碼,它會顯示我同樣的錯誤信息:( –

+0

我的不好,我用'k'而不是'K'。現在錯誤信息消失了。 –

+1

好嗎!增加了'scheduler.join',它工作。謝謝@Holger –