2012-04-19 2 views
0

Hell all. Мне нужна помощь с рубиновым скриптом, который я пишу, который, похоже, не работает. Проще говоря, я получаю сообщение об ошибке при использовании Rufus, чтобы запланировать, чтобы что-то произошло «в» определенное время.Планирование работы в Ruby с rufus-scheduler не работает

Вот мой код.

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 (в данном случае сообщение из очереди SQS Amazon, на которую я подписал), и скажите, чтобы он завивал 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,

первая ошибка не связана с Руфус-планировщик. Вероятно, вы передаете нулевой «url» в библиотеку Curl.

Вторая ошибка

не может определить «на» время от: «1334865999,4416242» (ArgumentError)

является Руфус-планировщик жалуясь о получении передается строка не может превратиться в экземпляр времени ,

Try что-то вроде

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

Таким образом, чтобы подвести итог, вы видите две различные ошибки. Закрепите их один за другим. Начните с одного в сердце: Curl жалуется на то, что какой-то ноль прошел вместо строки, а затем посмотрите на вопрос о старте.

Приветствия,

Джон

+1

Спасибо Джон! Я смог разобраться с первой проблемой, у меня действительно возникла проблема при передаче URL-адреса для завивки. Что касается второго вопроса, я попробую это, еще раз спасибо! – fattastic

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