如果设置了值,则使用erb + Chef为模板写入值

时间:2013-07-31 02:05:27

标签: ruby erb chef chef-recipe

在厨师的erb中写这样的逻辑的最简洁的方法是什么?

<% if node[:ipynb][:NotebookApp][:certfile] %>
   c.NotebookApp.certfile = <%= node[:ipynb][:NotebookApp][:certfile] %>
<% end %>

1 个答案:

答案 0 :(得分:2)

我不确定你的方法有什么问题,但如果你想要一个单行,这应该有用:

<%= "c.NotebookApp.certfile = #{node[:ipynb][:NotebookApp][:certfile]}" if node[:ipynb][:NotebookApp][:certfile] %>

对于Ruby中的布尔表达式,nilfalse值转换为false,其他所有内容都为true。如果node[:ipynb][:NotebookApp][:certfile]中有任何值,它将评估为true并打印字符串。否则,它什么都不打印。