与Rufus一起使用Rake

时间:2015-01-05 23:29:14

标签: ruby-on-rails ruby rake rufus-scheduler

我正在尝试使用rake和rufus,这两者都是我的新手。我想让Rufus调用我的rake任务,但是我收到以下错误。 Don't know how to build task 'inbox:process_inbox'

LIB /任务/ inbox_tasks.rb

namespace :inbox do
  task :process_inbox do
    logger = Logger.new(Rails.root.to_s + "/log/scheduler.log")
    logger.info "Rufus Here!"
  end
end

rufus_scheduler.rb

require 'rufus-scheduler'
require 'rake'

scheduler = Rufus::Scheduler.new

scheduler.every '10s', :first_at => Time.now + 3 do
  Rake::Task["inbox:process_inbox"]
end

2 个答案:

答案 0 :(得分:2)

这个可以帮忙吗?

How to build task 'db:populate'(将inbox_tasks.rb重命名为inbox_tasks.rake)

(做了一个简单的https://www.google.com/?#q=rails+don%27t+know+how+to+build+task ...)

答案 1 :(得分:2)

由于@jmettraux( rufus-scheduler的创建者!)已经回答,问题是rake任务是在.rb文件而不是.rake中定义的文件。

添加更多细节以便将来提供帮助。

在创建新的rake任务时,您可以让rails生成器自动创建具有适当结构的文件。

示例:正在运行

> rails g task inbox process_inbox
create  lib/tasks/inbox.rake

将创建一个名为lib/tasks/inbox.rake的文件,内容为:

namespace :inbox do
 desc "TODO"
 task process_inbox: :environment do
 end 

end

在任务定义中有DESC很重要;允许通过运行rake -T inboxrake -T | grep inbox

来验证rake任务是否已定义且可用
> rake -T inbox
rake inbox:process_inbox  # TODO