我正在尝试使用rake和rufus,这两个我都是新手。我想让鲁弗斯调用我的rake任务,但我得到以下错误。Don't know how to build task 'inbox:process_inbox'
lib/tasks/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_调度程序.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

最佳答案

作为@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

关于ruby-on-rails - 与Rufus一起使用Rake,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27789707/

10-16 02:26