Heroku Resque/ Clockwork 'Не определено задание для класса'

Я пытаюсь запустить фоновую работу на Heroku, используя Resque / Clockwork.

Локально, задания ставятся в очередь Clockwork и выполняются Resque, как и ожидалось. На Heroku иногда это работает... но большую часть времени Clockwork ставит в очередь задание, как и ожидалось, и при выполнении Resque я получаю сбойное задание с ошибкой "Задание не определено для класса".

Точная ошибка, которая появляется через панель администратора Resque:

Worker 960f8a1b-cce9-497a-a7ab-9b40c166a600:2+1 on FEATURED_CATALOG_ITEMS_CACHE at 27 minutes ago     Retry or Remove
Class nil
Arguments nil
Exception Error
Error No job defined for class 'Workers::FeaturedCatalogItemsCacheWorker'

Мой код выглядит так:

/app/models/workers/featured_catalog_items_cache_worker.rb

class Workers::FeaturedCatalogItemsCacheWorker

  @queue = :featured_catalog_items_cache

  def self.perform
    p 'do work' # there is more code here but edited for brevity
  end
end

/lib/clock.rb

require File.expand_path('../../config/boot',        __FILE__)
require File.expand_path('../../config/environment', __FILE__)
require 'clockwork'

module Clockwork
  every(2.minutes, 'Queueing FeaturedCatalogItemsCacheWorker job') { Resque.enqueue(Workers::FeaturedCatalogItemsCacheWorker) }
end

/lib/tasks/resque.rake

require 'resque/tasks'

task "resque:setup" => :environment do
ENV['QUEUE'] = '*'
end

PROCFILE

web: rackup -p $PORT
resque: env TERM_CHILD=1 bundle exec rake resque:work
clock: bundle exec clockwork lib/clock.rb

Я что-то пропустил?

1 ответ

Может быть в /lib/clock.rb

require 'Workers::FeaturedCatalogItemsCacheWorker'

Решение:

требует './config/boot' требует './config/environment' требует "часовой механизм" требовать 'resque'

Модуль Заводной

обработчик | работа | ставит "Выполнение задания: #{job}" Resque.enqueue(работа) конец

каждые (15 минут, NewsRssReader) конец

Другие вопросы по тегам