Допустим, у нас есть два ресурса:блоки не видят методы (шашлычник ресурсы)
template 'template1' do
owner 'root'
group 'root'
end
template 'template2' do
owner 'root'
group 'root'
end
Я хотел бы повторно использовать код внутри ресурсов. Однако, если я определяю proc в рецепте, вы получаете NoMethodError для owner
, 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
Возникает ли ошибка, если вы сделаете это глобальный ('$ common_cfg')? –
Переменная proc оценивается штрафом, поскольку NoMethodError встречается в контексте proc (владелец, группа и т. Д.) – m33lky
Oh; gotcha - удалит комментарий. –