Resque - 未定义的方法'执行'为类

时间:2013-09-05 09:25:30

标签: ruby-on-rails ruby resque

目前我在背景队列方面运气不佳。我正试图让Resque工作。我已经安装了redis和Resque gem。

Redis正在运行。一个工人正在运行(rake resque:work QUEUE = simple)。使用Web界面,我可以看到工作人员正在运行并等待工作。

当我运行'rake get_updates'时,作业排队但失败了。我已经尝试过def self.perform和def perform。

clockwork.rake

task :get_updates => :environment do
    Resque.enqueue(GetUpdates)
end

类文件(app / workers / get_updates.rb)

class GetUpdates
    @queue = :simple

    def perform

        puts "Running GetUpdates"

    end

end

错误消息

undefined method `perform' for GetUpdates:Class
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bundler/gems/resque-620d354454b8/lib/resque/job_performer.rb:79:in `perform_job'
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bundler/gems/resque-620d354454b8/lib/resque/job_performer.rb:46:in `execute_job'
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bundler/gems/resque-620d354454b8/lib/resque/job_performer.rb:25:in `perform' 

2 个答案:

答案 0 :(得分:9)

perform方法应该是类实例方法。

class GetUpdates
  @queue = :simple

  def self.perform
    puts "Running GetUpdates"
  end

end

答案 1 :(得分:1)

在将方法更改为self.perform后,您是否尝试重新启动resque?退出rake resque并在将方法名称更改为self.perform后再次启动。这应该是肯定的。