2016-06-02 5 views
1

Я пытаюсь передать некоторые значения в рецепт шеф-повара из json-файла.
Все, что я хочу, это установить некоторые значения в моем рецепте из удаленного файла.Читать параметры от JSON Chef

Мой JSON файл my_conf.json выглядит следующим образом:

{ 
    "something": { 
    "listen_port": "81", 
    "listen_path": "/myapp" 
    }, 
    "users":{ 
    "user": "me" 
    } 
} 

Я бегу мой шеф-клиент с этим JSON в Params:

chef-client -z run.rb -j my_conf.json 

В рецепте я попробовал:

@test = node[:something][:listen_port] 
@test = node['something']['listen_port'] 
@test = node.default[:something][:listen_port] 

Но ничего не работает. Любые идеи?

+0

Что вы на самом деле делаете с содержимым '@ test'? В коде рецепта это отлично работает 'puts node ['something'] ['listen_port']' (то же самое для версии с использованием символов (': something'). – StephenKing

ответ

1

node['something']['listen_port'] является правильным, но node[:something][:listen_port] будет работать. Скорее, назначение переменной экземпляра (@test =) вместо обычной локальной переменной (test =) путает вещи. Шеф-повар делает много магии, с внутренним охватом Ruby.

Смежные вопросы