2012-04-19 3 views
0

Hell everyone。私が書いているルビースクリプトには、うまくいかないような助けが必要です。簡単に言えば、Rufusを使用して特定の時間に何かが起きるようにスケジュールを設定すると、エラーが発生します。rufus-schedulerでRubyでジョブをスケジューリングしていない

ここに私のコードです。

starttime = Time.new + (60) 
    scheduler = Rufus::Scheduler.start_new 
    scheduler.at starttime do 
    Curl::Easy.download(url, filename = "/tmp/test.xml") 
    end 

それは動作しますが、それは、次のと最初の実行だ後にエラーアウト:

================================================================================ 
scheduler caught exception: 
can't convert nil into String 
/Users/me/.gem/ruby/1.9.1/gems/curb-0.8.0/lib/curl/easy.rb:38:in `add' 
/Users/me/.gem/ruby/1.9.1/gems/curb-0.8.0/lib/curl/easy.rb:38:in `perform' 
/Users/me/.gem/ruby/1.9.1/gems/curb-0.8.0/lib/curl/easy.rb:358:in `download' 
/Users/me/Dropbox/Files/Personal/RubyMine/hbo_hackathon/SOME:19:in `block (2 levels) in <top (required)>' 

私はルビー(および一般的な開発)にはかなり新しいですので、これは、なぜ私はわかりませんハプニング。誰か助けてもらえますか?このため

starttime = REXML::XPath.first(doc, '/new/time/text()') 

理由私は外の動的な時間を引き出したいからである。このラインで

starttime = Time.new + (60) 

また、ここでの本当の目標は、この行を置き換えることですいくつかのXML(この場合、Amazon SQSキューから購読しているメッセージ)を受信し、特定の時刻にURLをカールするように指示します。それが私がこれを実現しようとしている本当の理由です。

XMLから時刻を渡そうとすると、全く異なるエラーが発生します。可能なすべてのタイプのタイムフォーマットを送信しようとしましたが、それでもエラーが表示されます。助けてください!

/Users/me/.gem/ruby/1.9.1/gems/rufus-scheduler-2.0.16/lib/rufus/sc/rtime.rb:327:in `at_to_f': cannot determine 'at' time from : "1334865999.4416242" (ArgumentError) 
    from /Users/me/.gem/ruby/1.9.1/gems/rufus-scheduler-2.0.16/lib/rufus/sc/jobs.rb:253:in `determine_at' 
    from /Users/me/.gem/ruby/1.9.1/gems/rufus-scheduler-2.0.16/lib/rufus/sc/jobs.rb:90:in `initialize' 
    from /Users/me/.gem/ruby/1.9.1/gems/rufus-scheduler-2.0.16/lib/rufus/sc/me.rb:149:in `new' 
    from /Users/me/.gem/ruby/1.9.1/gems/rufus-scheduler-2.0.16/lib/rufus/sc/scheduler.rb:149:in `at' 
    from /Users/me/Dropbox/Files/Personal/RubyMine/hbo_hackathon/SOME:18:in `block in <top (required)>' 

答えて

1

OK、

最初のエラーがルーファス・スケジューラをするためには関係ありません。 curlライブラリに無関係の "url"を渡している可能性があります。

2番目のエラー

から時間「で、」決定することはできません:「1334865999.4416242」(例外ArgumentError)

ルーファス・スケジューラは、それがタイムインスタンスに変えることができない文字列が渡され得ることについて不平を言っています。

は、2つの異なるエラーを見ている、要約する、だから、

starttime = REXML::XPath.first(doc, '/new/time/text()').to_f 

のようなものを試してみてください。それらを順番に修正してください。心臓部のものから始めてください:カールは文字列の代わりに何も通らないと不平を言って、スタートタイムの問題を見てください。

乾杯、

ジョン

+1

おかげジョン!私は最初の問題を理解することができました。本当にカールするURLを渡すときに問題が発生しました。 2番目の問題については、もう一度お試しください! – fattastic

関連する問題