厨师和erb模板。如何使用布尔代码块

时间:2012-03-30 01:38:26

标签: ruby chef

我是Chef,ruby,ruby DSL和erb的新手。我来自python。 在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 个答案:

答案 0 :(得分:27)

试试这个:

<% 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标记中