【发布时间】:2012-08-14 19:50:30
【问题描述】:
我正在尝试为后台工作者类编写 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
这有意义吗?希望这里有人能指出我正确的方向。
【问题讨论】:
标签: ruby metaprogramming jruby dsl