首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何传递参数并在(resque-status) Resque::JobWithStatus中使用这些参数?

如何传递参数并在(resque-status) Resque::JobWithStatus中使用这些参数?
EN

Stack Overflow用户
提问于 2013-06-11 08:59:37
回答 1查看 2.8K关注 0票数 1

我的上班族是:

代码语言:javascript
复制
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

我的控制员部分,我把这叫做.

代码语言:javascript
复制
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),如果我将参数部分添加回,它说选项没有定义 :(您能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2013-06-11 13:39:39

您获得“选项未定义”错误的原因是您没有在使用它的方法中定义options。您的self.perform方法希望接收两个不同的参数,querylabel,但是方法中的代码希望有一个options哈希。你必须选择一个或另一个。

要么这样做:

代码语言:javascript
复制
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")

否则就这么做:

代码语言:javascript
复制
# 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'])。你只需要保持一致。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17040160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档