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

Tam*_*mpa 13 ruby chef-infra

我是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 -%>
Run Code Online (Sandbox Code Playgroud)

很明显,我错过了正确的语法.

谢谢

Jos*_*ark 27

试试这个:

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

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

<% end -%>

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

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

<% end -%>
Run Code Online (Sandbox Code Playgroud)

包含在代码中的代码<% %>或是<% -%>被评估的语句.包含的<%= %>代码是已评估的代码,结果将放入文件中.如果它们是常量,则编码的字符串不必包含在erb标记中,但如果您希望该代码的结果进入您的文件,则必须将Ruby代码包装在erb标记中

  • 对于那些对这些额外连字符感兴趣的人:http://stackoverflow.com/a/7996827/750510 (2认同)