Шаблоны Chef и Erb.Как использовать блоки логического кода - PullRequest
13 голосов
/ 30 марта 2012

Я новичок в шеф-поваре, рубине, рубине DSL и эрбе.Я родом из питона.В шаблоне ruby ​​erb я хочу сделать что-то вроде этого.

<% if node[:monit][:server]=='nginx' -%>

ALL OF MY NGINX TEXT 

<% end -%>

<% if node[:monit][:server]=='redis' -%>

ALL OF MY REDIS TEXT 

<% end -%>

Я явно упускаю что-то из-за правильного синтаксиса.

Спасибо

1 Ответ

27 голосов
/ 30 марта 2012

Попробуйте это:

<% if node[:monit][:server]=='nginx' -%>

  nginx_text=<%= node[:nginx][:text] %> 

<% end -%>

<% if node[:monit][:server]=='redis' -%>

  redis_text=<%= node[:redis][:text] %> 

<% end -%>

Код, заключенный в <% %> или <% -%>, является оператором, который оценивается. Код, заключенный в <%= %> - это код, который оценивается и результат помещается в файл. Скрепленные строки не обязательно должны быть заключены в теги erb, если они постоянны, но код Ruby должен быть заключен в теги erb, если вы хотите, чтобы результат этого кода попадал в ваш файл

...