0

before_enqueueメソッドのresqueenqueueメソッドの*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に関してすべてを話している

enqueue メソッドを呼び出します。

Resque.enqueue(class_name, {})

resque perform クラス内:

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

上記の引数は before_perform でも利用できます。

于 2012-09-05T07:18:51.747 に答える