2015-12-21 1 views
0

Я использую resque драгоценный камень для фоновых задач. Я хочу передать proc в качестве аргумента для рабочего. Есть ли способ сделать это? например:Pass proc/lambda in resque jobs

Resque.enqueue_in(3.hours, ExecuteAfterIntervalWorker, self.class.name, self.id, method_name, if: Proc.new{|e| e.enabled? }) 
+0

Наверху метод вызывается для если состояние если способ есть. Это заставило его работать, но не понравилось :( – jbmyid

ответ

1

Вещи вы передаете Resque, они должны быть сериализации в JSON. И procs не сериализуемы для json. Так что вам не повезло.

Вам действительно нужен этот уровень динамизма?

+0

На самом деле я создаю беспокойство и передаю методы 'if' и' except' в методе беспокойства. Рабочий будет вызывать этот метод рекурсивно. – jbmyid

0

Почему бы просто не создать дело обертывания, которое может или не может выполнить надлежащую работу для вас?

class ExecuteAfterIntervalWorkerIfEnabled 
    def self.perform(...) 
    obj = Object.find(id) 
    ExecuteAfterIntervalWorker.perform(...) if obj.enabled? 
    end 
end 
+0

Я хочу вас. – jbmyid

+0

Добавлен пример проиллюстрируйте –

+0

На самом деле я создаю беспокойство и передаю, если и если процесс не обрабатывается в методе концерна. рабочий будет вызывать этот метод рекурсивно. Поэтому имя метода является dunamic и может быть не простым методом, это могут быть условия – jbmyid