我的上班族是:
require 'resque'
require 'resque/job_with_status'
class PatstatResqueWorker < Resque::JobWithStatus
@queue = :my_worker_q
def self.perform(query, label)
puts "query:"
puts options['query']
puts "label:"
puts options['label']
end
end我的控制员部分,我把这叫做.
class MyController < ApplicationController
def resque
job_id = PatstatResqueWorker.create(:query => @query, :label => "yes")
status = Resque::Plugins::Status::Hash.get(job_id)
end
end而且它不起作用:(如果我从resque函数中删除参数,它说错误的参数数(2表示为0),如果我将参数部分添加回,它说选项没有定义 :(您能帮忙吗?
发布于 2013-06-11 13:39:39
您获得“选项未定义”错误的原因是您没有在使用它的方法中定义options。您的self.perform方法希望接收两个不同的参数,query和label,但是方法中的代码希望有一个options哈希。你必须选择一个或另一个。
要么这样做:
def self.perform(query, label)
# use the parameters we've already defined
puts "query:"
puts query
puts "label:"
puts label
end
# call it like this
PatstatResqueWorker.create(@query, "yes")否则就这么做:
# change the method signature to match what you're doing
def self.perform(options)
puts "query:"
puts options['query']
puts "label:"
puts options['label']
end
# call it like this, with string keys
PatstatResqueWorker.create('query' => @query, 'label' => "yes")注意,对于散列版本,我将调用更改为使用字符串作为散列键,而不是符号。如果需要,可以使用符号,但也必须在方法的正文中更改它(即options[:query]而不是options['query'])。你只需要保持一致。
https://stackoverflow.com/questions/17040160
复制相似问题