Ruby 将挡块传递到包括挂钩的模块
我想包括一个同时传递配置块的模块 现在我有这样的东西Ruby 将挡块传递到包括挂钩的模块,ruby,Ruby,我想包括一个同时传递配置块的模块 现在我有这样的东西 class Check include Zabase::ObjectPrinter pp_values :title end 因为我不想污染Check类的名称空间,所以我想使用如下DSL块: class Check include Zabase::ObjectPrinter do pp_values :title end # calling pp_values here should fail end
class Check
include Zabase::ObjectPrinter
pp_values :title
end
因为我不想污染Check
类的名称空间,所以我想使用如下DSL块:
class Check
include Zabase::ObjectPrinter do
pp_values :title
end
# calling pp_values here should fail
end
有可能实施这一点吗?我已经看到,
self.included
没有收到块。实现这一点的常用方法是:
module Zabase::ObjectPrinter
# ...
def self.included base
base.extend ClassMethods
end
module ClassMethods
def zabase_configure &block
instance_eval(&block) if block_given?
end
end
end
然后
class Check
include Zabase::ObjectPrinter
zabase_configure do
...
end
end
实现这一目标的常见方法是:
module Zabase::ObjectPrinter
# ...
def self.included base
base.extend ClassMethods
end
module ClassMethods
def zabase_configure &block
instance_eval(&block) if block_given?
end
end
end
然后
class Check
include Zabase::ObjectPrinter
zabase_configure do
...
end
end