Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku resque/clockwork“没有为类定义作业”_Ruby On Rails_Ruby_Heroku_Resque_Clockwork - Fatal编程技术网

Ruby on rails Heroku resque/clockwork“没有为类定义作业”

Ruby on rails Heroku resque/clockwork“没有为类定义作业”,ruby-on-rails,ruby,heroku,resque,clockwork,Ruby On Rails,Ruby,Heroku,Resque,Clockwork,我正在尝试使用Resque/Clockwork在Heroku上运行后台作业。 在本地,作业按时钟系统排队,并按预期由Resque执行。在Heroku上,有时它是有效的。。。但大多数时候,时钟系统会按照预期对作业进行排队,当Resque执行时,我会得到一个失败的作业,错误是“没有为类定义作业”。 通过Resque管理面板显示的确切错误是: 我的代码如下所示: /app/models/workers/featured_catalog_items_cache_worker.rb /

我正在尝试使用Resque/Clockwork在Heroku上运行后台作业。

在本地,作业按时钟系统排队,并按预期由Resque执行。在Heroku上,有时它是有效的。。。但大多数时候,时钟系统会按照预期对作业进行排队,当Resque执行时,我会得到一个失败的作业,错误是“没有为类定义作业”。

通过Resque管理面板显示的确切错误是:

我的代码如下所示:

/app/models/workers/featured_catalog_items_cache_worker.rb

/lib/clock.rb

/lib/tasks/resque.rake

程序文件

我错过什么了吗? 可能在/lib/clock.rb中

解决方案:

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


问题是,有一个节点实例运行自己的resque,但与rails共享redis,它们都在处理“*”队列。节点拾取rails作业并使用“未为类定义作业”出错,rails拾取节点作业并使用“错误的常量名称”出错。
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
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
require 'resque/tasks'

task "resque:setup" => :environment do
ENV['QUEUE'] = '*'
end
web: rackup -p $PORT
resque: env TERM_CHILD=1 bundle exec rake resque:work
clock: bundle exec clockwork lib/clock.rb
require 'Workers::FeaturedCatalogItemsCacheWorker'

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