0
從YAML文件
我讀變量:如何在yaml文件中未聲明從yaml文件讀取的變量時引發異常?
begin
settings = YAML.load_file 'vm.yaml'
$var_a = settings['var_a']
$var_b = settings['var_b']
....
$var_z = settings['var_z']
rescue
puts "\nInvalid vm.yaml - please create or recreate vm.yaml from vm.yaml.example\n\n"
exit 1
end
puts $var_a
如果變量沒有在vm.yaml文件中設置,將不會被檢測到的誤差,直到可變第一次被訪問(例如,在puts $var_a
)。
最好是,如果在yaml文件中沒有設置變量,我希望執行rescue塊中的代碼。
什麼是最寶貴的方式來做到這一點?
@DaneAnderson - 謝謝!如何獲取嵌套元素?例如。 'var_a_a = settings ['var_a'] ['a']' – 2014-11-04 21:36:54
鑑於您正在從yaml文件加載數據,您可能正在使用嵌套散列。開始時他們可能有點困難,但是在它的核心,這意味着對方法'settings.fetch('var_a')'的迴應是一個散列,所以你可以繼續使用[ ]或獲取以獲取返回的散列值,使其成爲'settings.fetch('var_a')。fetch('a')' – 2014-11-04 21:40:07