简体   繁体   English

Heroku resque / clockwork'没有为班级定义工作'

[英]Heroku resque/clockwork 'No job defined for class'

I am trying to run a background job on Heroku using Resque/Clockwork. 我正在尝试使用Resque / Clockwork在Heroku上运行后台作业。

Locally, jobs are queued by Clockwork and executed by Resque as expected. 在本地,作业由Clockwork排队,并由Resque按预期执行。 On Heroku, sometimes it works... but most of the time Clockwork queues the job as expected, and when executed by Resque I get a failed job with the error 'No job defined for class'. 在Heroku上, 有时它可以工作...但是,大多数情况下Clockwork按预期方式将作业排队,当由Resque执行时,我收到了失败的作业,错误为“未为类定义作业”。

The exact error that shows up through the Resque admin panel is: 通过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'

My code looks like: 我的代码如下:

/app/models/workers/featured_catalog_items_cache_worker.rb /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 /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 /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

Am I missing something? 我想念什么吗?

maybe in /lib/clock.rb 也许在/lib/clock.rb

require 'Workers::FeaturedCatalogItemsCacheWorker'

Solution : 解决方案:

require './config/boot' require './config/environment' require 'clockwork' require 'resque'

module Clockwork

handler do |job| puts "Running job : #{job}" Resque.enqueue(job) end

every(15.minutes, NewsRssReader ) end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM