2015-01-05 26 views
2

我正在嘗試用戶耙和rufus,這兩者我都是新手。我想讓Rufus打電話給我的耙子任務,但我得到以下錯誤。 Don't know how to build task 'inbox:process_inbox'與Rufus一起使用Rake

的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

正如@jmettraux已經回答(魯弗斯調度的創造者),問題在於rake任務是在.rb文件中定義的,而不是.rake文件。

添加一些更多的細節,以幫助未來。

在創建新的rake任務時,您可以讓rails generator自動創建具有適當結構的文件。

示例:運行

> 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任務的定義和可用的,由運行的是rake -T inboxrake -T | grep inbox

> rake -T inbox 
rake inbox:process_inbox # TODO 
+1

感謝普拉卡什爲詳細的解答。我希望它被接受。 – jmettraux