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获得

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...