2017-02-21 4 views
1

Я хочу, чтобы я планировал работу, выполняемую каждый час на моем компьютере с Windows, и использовал для этого rufus-scheduler. Однако я не могу действовать из-за ошибки часового пояса, описанной ниже.Windows: Rufus: `ENV ['TZ'] = 'Континент/Город' Ошибка

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

Я пробовал делать это в следующую минуту, но stackoverflow хотел, чтобы я подождал, когда-нибудь, чтобы принять его. Позже забыл. Выполнено сейчас :) Спасибо yu –

ответ

1

Согласно статье Википедии, связанной с сообщением об ошибке, единственным действующим часовым поясом для Индии (и, следовательно, IST) является Asia/Kolkata.

Таким образом, если вы установите

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

вы должны получить правильный часовой пояс.

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

+0

Эй, спасибо за информацию, у моей ОС установлен правильный часовой пояс. Кроме того, я попробовал свой код, и он отобразил бы меня то же сообщение об ошибке :( –

+0

. Плохо, я использовал 'k' вместо' K'. Теперь сообщение об ошибке исчезло. Однако ничего не происходит после выполнения –

+1

okay! Добавлен 'scheduler.join' и он работает. Спасибо @Holger –

Смежные вопросы