Я пытаюсь написать DSL для фонового рабочего класса, и я немного застрял, пытаясь что-то сделать.
В идеале я должен быть в состоянии написать работника, как показано ниже...
job :job_name do |param1, param2|
puts param1
end
Теперь, в моем рабочем суперклассе, я делаю что-то вроде этого...
class Worker
def self.job(job_name, &block)
define_method job_name do
# stuck
end
# do some additional stuff here
end
end
Что я хочу сделать, так это определить метод, который имеет доступ к аргументам блока, которые использовались в исходном вызове задания, чтобы я мог запустить это задание с помощью:
Worker.new.job_name(param1, param2)
Созданный метод должен быть функционально эквивалентен:
def job_name(param1, param2)
puts param1
end
Это имеет какое-либо значение? Надеясь, что кто-то здесь может указать мне в правильном направлении.