0

有没有办法在 before_enqueue 方法的 resque enqueue 方法的 *args 参数中添加一些 args 并将添加的参数传递给 before_perform 方法。

或者有什么方法可以独立地将一些数据从 before_enqueue 方法发送到 before_perform 方法?

例如:

class Action
    :queue queueName

    def self.before_enqueue(*args)
        param1 = 1
        param2 = 2
        args.push(param1, param2) 
        # I know this is not the correct way as args is a local variable here. 
        #But something like this
    end

    def self.before_perform(*args)
        puts args.inspect # I need the added args here
    end

    def self.perform(params)
        #some code here
    end
end
4

1 回答 1

2

发现无法在 before_enqueue 中添加额外的参数。但相反,我们可以修改现有参数。因此,我们可以在 enqueue 调用中传递一个空哈希作为参数,并将参数作为键值对添加到 before_enqueue 的这个空哈希中。我说的是关于 Resque 1.20.0 的一切

调用入队方法:

Resque.enqueue(class_name, {})

在 resque 执行类中:

self.before_enqueue(*args)
  args[0][:param1] = 1
  args[0][:param2] = 2
end

上述参数也将在 before_perform 中可用。

于 2012-09-05T07:18:51.747 回答