이의 우리는 두 가지 자원을 가지고 있다고 가정 해 봅시다 방법 (요리사 자원)를 참조하지 않습니다. 그러나 내가 recipe에서 proc을 정의하면 owner
, group
등의 NoMethodError가 발생합니다. 왜 그런 일이 발생합니까? 어휘 적 범위는 다르지 않은가? 결과적으로 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
당신이 그것을 글로벌 ('$의 common_cfg') 할 경우 오류가 발생합니까입니까? –
NoMethodError가 proc (소유자, 그룹 등)의 컨텍스트에서 발생하기 때문에 proc 변수가 잘 평가됩니다. – m33lky
Oh; gotcha - 댓글을 삭제합니다. –