地獄のみんな。私が書いている Ruby スクリプトが機能していないようで、助けが必要です。簡単に言えば、Rufus を使用して特定の時間に何かが起こるようにスケジュールすると、エラーが発生します。
これが私のコードです。
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)>'
私は Ruby (および一般的な開発) にかなり慣れていないので、なぜこれが起こっているのかわかりません。誰か助けてくれませんか?
また、ここでの本当の目的は、次の行を置き換えることです。
starttime = Time.new + (60)
この行で:
starttime = REXML::XPath.first( doc, '/new/time/text()')
この理由は、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)>'