私は人形(ルビー)で開発を開始しています。次の問題があります。人形。 ERBでネストされたハッシュを繰り返し処理します
私は、テンプレートファイル内で反復したい現在のハッシュを持っています。
$database_profile_hash =
{
cpu => {
governor => ondemand
energy_perf_bias => powersave
}
sysctl => {
kernel.sched.min.granularity.ns => 10000000
kernel.sched.wakeup.granularity.ns => 15000000
kernel.msgmnb => 6
}
...
}
そして、私の現在のテンプレートは以下の通りです:
<% @database_profile_array.each do |arrayValue| %>
[<%= arrayValue %>]
<% database_profile_hash[arrayValue].each do |key,value| %>
<%= key %> <%= value %>
<% end %>
<% end %>
私はハッシュを反復するために、すべての最初のレベル名を格納し、それを使用するために、配列を使用しようとしています配列反復する:
を$ database_profile_array = [CPU、sysctlを、...]
しかし、私はそれを動作させることができないと私はこのような、出口を探しています:
[cpu]
governor=ondemand
energy_perf_bias=powersave
[sysctl]
vm.laptop_mode=5
vm.dirty_writeback_centisecs=1500
kernel.nmi_watchdog=0
テンプレートで間違っていますか?変数 "arrayValue"の内容を渡してハッシュを反復する方法がありますか?
事前のおかげでたくさん...
トップレベルキーを別々に並べる必要はありません。最上位のハッシュを反復して、それらのキーと関連するハッシュ(値)を取得することができます。別の配列は、セクションが表示される正確なシーケンスを指定する場合や、トップレベルキーの外部指向サブセットを選択する場合にのみ便利です。 –
RE答え: ' - %>'は、人形のERBトリムモードが '--'であるためです。 REコメント:彼は 'puppetlabs-stdlib'の' keys'で配列を自動的に生成することもできます。 –
@JohnBollinger非常に良い点は、あなたのヒントを含めるために私の答えを編集しました。ありがとう! – drewyupdrew