2012-03-30 6 views
11

Soy nuevo en chef, ruby, ruby ​​DSL y erb. Vengo de Python. En una plantilla erb de ruby, quiero hacer algo como esto.plantillas chef y erb. Cómo usar bloques de código booleanos

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

ALL OF MY NGINX TEXT 

<% end -%> 

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

ALL OF MY REDIS TEXT 

<% end -%> 

Claramente me falta algo acerca de la sintaxis adecuada.

Gracias

+1

¿Por qué? ¿Te da un error? Por favor inclúyalo. –

Respuesta

25

Prueba esto:

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

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

<% end -%> 

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

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

<% end -%> 

Código envuelto en <% %> o <% -%> es una declaración que se evalúa. El código incluido en <%= %> es un código que se evalúa y el resultado se coloca en el archivo. Las cadenas codificadas no deben estar envueltas en etiquetas erb si son constantes, pero el código Ruby debe estar envuelto en etiquetas erb si desea que el resultado de ese código entre en su archivo

+2

Para aquellos que estén interesados ​​en los guiones adicionales: http://stackoverflow.com/a/7996827/750510 – madhead

Cuestiones relacionadas