A.2. ERB テンプレートの作成
以下のタグは最も重要であり、ERB テンプレートで一般的に使用されています。
<% %>
すべての Ruby コードは、ERB テンプレートの <% %>
内に囲まれています。コードはテンプレートのレンダリング時に実行されます。これには Ruby の制御フロー構造と、Satellite 固有のマクロおよび変数を含めることができます。以下に例を示します。
<% if @host.operatingsystem.family == "Redhat" && @host.operatingsystem.major.to_i > 6 -%> systemctl <%= input("action") %> <%= input("service") %> <% else -%> service <%= input("service") %> <%= input("action") %> <% end -%>
このテンプレートは、サービスを使用して警告なしにアクションを実行し、出力には何も返さないことに注意してください。
<%= %>
これは、<% %>
と同じ機能を提供しますが、テンプレートが実行されると、コード出力はテンプレートに挿入されます。これは変数の置き換えに便利です。以下に例を示します。
入力例:
echo <%= @host.name %>
レンダリング例:
host.example.com
入力例:
<% server_name = @host.fqdn %> <%= server_name %>
レンダリング例:
host.example.com
誤った変数を入力した場合、出力は返されない点にご留意ください。ただし、誤った変数でメソッドを呼び出そうとすると、以下のエラーメッセージが返されます。
入力例:
<%= @example_incorrect_variable.fqdn -%>
レンダリング例:
undefined method `fqdn' for nil:NilClass
<% -%>, <%= -%>
デフォルトでは、行末で閉じられている場合に、改行文字が Ruby ブロックの後に挿入されます。
入力例:
<%= "line1" %> <%= "line2" %>
レンダリング例:
line1 line2
デフォルトの動作を変更するには、-%>
で囲みマークを変更します。
入力例:
<%= "line1" -%> <%= "line2" %>
レンダリング例:
line1line2
これはレンダリングされるテンプレートの行数を減らすために使用されます (Ruby 構文で許可される場合)。ERB タグの空白は無視されます。
これをレポートテンプレートで使用して、FQDN と IP アドレス間の不要な改行を削除する方法の例を以下に示します。
入力例:
<%= @host.fqdn -%> <%= @host.ip -%>
レンダリング例:
host.example.com10.10.181.216
<%# %>
テンプレートのレンダリング時に無視されるコメントを囲みます。
入力例:
<%# A comment %>
これは出力を生成しません。
ERB テンプレートのインデント
ERB タグの長さが異なるため、ERB 構文にインデントを入れると見にくい場合があります。ERB 構文は空白を無視します。インデントを処理する方法の 1 つは、新しい行の各行頭に ERB タグを宣言し、ERB タグ内の空白を使用して構文内の関係を説明することです。以下に例を示します。
<%- load_hosts.each do |host| -%> <%- if host.build? %> <%= host.name %> build is in progress <%- end %> <%- end %>