假设我们有两个资源:
template 'template1' do
  owner 'root'
  group 'root'
end
template 'template2' do
  owner 'root'
  group 'root'
end
我想在资源中重用代码。但是,如果我在配方中定义了一个 proc,你会得到一个 NoMethodErrorowner等group。为什么会这样?词法范围没有什么不同,是吗?结果我不得不使用self.instance_eval &common_cfg.
common_cfg = Proc.new {
  owner 'root'
  group 'root'
}
template 'template1' do
  common_cfg.call
end
template 'template2' do
  common_cfg.call
end