Powiedzmy mamy dwa zasoby:bloki nie widzę metod (środków szef kuchni)
template 'template1' do
owner 'root'
group 'root'
end
template 'template2' do
owner 'root'
group 'root'
end
Chciałbym ponowne wykorzystanie kodu wewnątrz zasobów. Jednak jeśli zdefiniuję proc w recepturze, otrzymasz NoMethodError dla owner
, group
itd. Dlaczego tak się dzieje? Zakres leksykalny nie jest inny, czyż nie? W rezultacie muszę użyć 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
Czy błąd występuje, jeśli sprawiają, że globalny ('$ common_cfg')? –
Zmienna proc jest oceniana poprawnie, ponieważ NoMethodError występuje w kontekście proc (właściciel, grupa itp.) – m33lky
Oh; gotcha - usunie komentarz. –