Я пытаюсь запустить простую задачу, чтобы протестировать совместное использование resque и clockwork.
Мой воркер: app/workers/logger_helper.rb
class LoggerHelper
@queue = :log_queue
def self.before_perform
Rails.logger = Logger.new(File.open(Rails.root.join('log', 'resque.log')))
Rails.logger.level = Logger::DEBUG
end
def self.perform
time = Time.now
Rails.logger.info("testing #{time}")
end
end
Мой файл clock.rb lib/clock.rb
require File.expand_path('../../config/boot', __FILE__)
require File.expand_path('../../config/environment', __FILE__)
require 'clockwork'
module Clockwork
handler do |job|
Resque.enqueue(job)
end
every(10.seconds, 'loggerhelper') {LoggerHelper}
end
Рейк-файл:
require File.expand_path('../config/application', __FILE__)
Rails.application.load_tasks
require 'resque/tasks'
task(:default).clear
task default: [:spec]
task "resque:setup" => :environment do
QUEUE = '*'
end
Сначала я запускаю resque:setup Во-вторых, я запускаю clockwork lib/clockwork.rb
Я получаю следующий вывод в терминале
INFO -- : Triggering 'loggerhelper'
INFO -- : Triggering 'loggerhelper'
...
Но в лог ничего не пишет.
Я пробовал комбинацию вещей, но я не вижу никакого результата.
я бежал
every(10.seconds, 'loggerhelper') {LoggerHelper.perform}
в файле clock.rb, и это работает, но я не думал, что вы должны вызывать доставку напрямую. Также я не уверен, действительно ли он работает вне очереди или просто выполняется.