Приветствую!
Следюущая ситуация: пишу erb-темплейт для паппета. Вид такой:
# XMX <%= xmx%><br/>
# XMX.class <%= xmx.class%><br/>
<%<br/>
mem = 4096.0<br/>
%><br/>
# MEM <%= mem%><br/>
# MEM.classs <%= mem.class%><br/>
<%<br/>
<br/>
if xmx == "NONE"<br/>
xmx = (mem * 0.7).to_s<br/>
%>XMX in if <%= xmx %> <%<br/>
else<br/>
%>XMX in else <%= xmx %> <%<br/>
end<br/>
%><br/>
# MEM <%= mem%><br/>
# MEM.class <%= mem.class%><br/>
# XMX <%= xmx%><br/>
# XMX.class <%= xmx.class%><br/>
Если там, где темплейт используется, определить xmx = «NONE», то всё ок, на выходе получаем:
# XMX NONE<br/>
# XMX.class String<br/>
<br/>
# MEM 4096.0<br/>
# MEM.classs Float<br/>
XMX in if 2867.2<br/>
# MEM 4096.0<br/>
# MEM.class Float<br/>
# XMX 2867.2<br/>
# XMX.class String
Если же определить xmx = «1024», например, то получаем в результате:
# XMX 1024<br/>
# XMX.class String<br/>
<br/>
# MEM 4096.0<br/>
# MEM.classs Float<br/>
XMX in else<br/>
# MEM 4096.0<br/>
# MEM.class Float<br/>
# XMX <br/>
# XMX.class NilClass<br/>
То есть переменная xmx после if получает тип nil. Если же попробовать без if, просто написать где либо xmx == «NONE», то всё хорошо, остается той же строкой.
Прошу подсказать, почему xmx становится nil-ом?