2017-02-21 15 views
1

Windowsマシンで1時間ごとに実行されているジョブをスケジュールし、そのためにrufus-schedulerを使用します。ただし、以下で説明するタイムゾーンエラーのために進めることができません。Windows:Rufus: `ENV ['TZ'] = 'Continent/City'エラー

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は私がそれを受け入れるためにしばらく待つことを望んでいました。後で忘れてしまった。 完了しました:)ありがとうございました –

答えて

1

エラーメッセージにリンクされているWikipediaの記事によると、インド(したがってIST)の唯一の有効なタイムゾーンはAsia/Kolkataです。

あなたは

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

を設定している場合このように、あなたは正しいタイムゾーンを取得する必要があります。

これは、最初に正しいローカルタイムゾーンを設定するようにオペレーティングシステムを設定することをお勧めします。これにより、別々のタイムゾーン構成を個別に必要とすることなく、他のソフトウェアをそのまま使用できるようになります。

+0

お世話になりました、私のOSには正しいタイムゾーンが設定されています。 私はあなたのコードを試してみましたが、同じエラーメッセージが表示されます:( –

+0

私の悪い、私は 'K'の代わりに' k'を使っていましたが、エラーメッセージは消えました。 –

+1

大丈夫です! 'scheduler.join'が追加され、動作します。ありがとう@Holger –

関連する問題