ruby-on-rails – 如何使用Rails钟表工具宝石来运行耙子任务?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何使用Rails钟表工具宝石来运行耙子任务?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从发条机构调用耙机任务的语法是什么?我已经尝试了各种语法,似乎没有任何效果. (由于Heroku的支持,我特别关注发条.)

这是我的clock.rb,使用与宝石使用相同的语法:

module Clockwork
  puts "testing clockwork!"
  every(30.seconds,'Send Messages') {
    rake 'scheduler:send_messages'
    }
end

这里是我的rake任务在scheduler.rake中:

task :send_messages => :environment do
  puts "rake task run successfully!"
end

当我开始发条时,会发生什么事情:

$clockwork lib/clock.rb
testing clockwork!
I,[2012-07-16T14:42:58.107245 #46427]  INFO -- : Starting clock for 1 events: [ Send Messages ]
I,[2012-07-16T14:42:58.107364 #46427]  INFO -- : Triggering 'Send Messages'
attempting to run rake task!
E,[2012-07-16T14:42:58.107437 #46427] ERROR -- : undefined method `rake' for Clockwork:Module (NoMethodError)

每30秒运行一次.你可以看到,clock.rb执行成功.但是我无法为我的生活找出运行耙子任务的语法.钟表自述没有帮助,不幸的是:

https://github.com/tomykaira/clockwork

解决方法

耙子不是一种方法,所以你不能像这样调用它.

你可以外壳出来并调用它,像

every(30.seconds,'Send Messages') {
  `rake scheduler:send_messages`
}

或者使用heroku API调用一个新的独立进程.这是我现在所喜欢的方法

Heroku::API.new.post_ps('your-app','rake scheduler:send_messages')

Heroku :: API可从heroku.rb:https://github.com/heroku/heroku.rb获得

猜你在找的Ruby相关文章