2015-01-05 2 views
2

Я пытаюсь использовать rake и rufus, оба из которых я новичок. Я хочу, чтобы Rufus вызывал мою задачу рейка, но я получаю следующую ошибку. Don't know how to build task 'inbox:process_inbox'Использование рейка с Rufus

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.

Добавить дополнительную информацию, чтобы помочь в будущем.

При создании новой задачи рейка вы можете получить генератор рельсов для автоматического создания файла с соответствующей структурой.

Пример: Запуск

> 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 inbox или rake -T | grep inbox

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

Спасибо Пракаш за подробный ответ. Надеюсь, он будет принят. – jmettraux

Смежные вопросы