Путать с синтаксисом шеф-повара - PullRequest
0 голосов
/ 01 июня 2018

Посмотрите на следующую строку кода шеф-повара:

node.default['apache']['dir']          = '/etc/apache2'

В официальных документах шеф-повара написано, что «узел» является объектом, а «по умолчанию» является его методом, так как можно вычислить квадратскобки (я думал, что это хэш-синтаксис) следуют за методом?

Я пришел из Python, и я новичок в Ruby, может быть, это общий синтаксис, или, может быть, это специфичный для Chef синтаксис, япросто запутался в этом синтаксисе.

1 Ответ

0 голосов
/ 02 июня 2018

node.default() (который на самом деле является псевдонимом для node.attributes().default()) возвращает экземпляр Chef::Node::VividMash, который работает как обычный объект Hash, но реализует глубокое поведение, которое вы видите там (где вы можетеустановить глубоко вложенный ключ, не создавая промежуточные уровни).

tl; dr Не беспокойтесь, мы делаем много хитростей с объектами, чтобы DSL выглядел как можно лучше.

...