什么是setcode意味着什么以及如何捕获其中的错误?

时间:2014-02-04 14:41:36

标签: ruby puppet facter

我写了以下事实。外部命令有时会抛出一个我想要捕获的错误。我找到了许多使用begin ... end块来捕获错误的示例。不幸的是,这些都不涉及setcode do ... end块。事实上,我找不到关于setcode的任何参考。任何人都可以对此有所了解吗?

Facter.add(:docexists) do
  setcode do
    cryptdevice = File.read("/home/adam/.cryptdevice")
    if `cryptsetup luksOpen --key-file /home/adam/klucz.bin #{cryptdevice} crypt-tmp`
      tmp = `cryptsetup luksClose crypt-tmp`
      true
    else
      false
    end
  end
end

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你会发错误

if `cryptsetup luksOpen --key-file /home/adam/klucz.bin #{cryptdevice} crypt-tmp`

线。那么begin-rescue-end块应该可以工作:

Facter.add(:docexists) do
  setcode do
    begin
      cryptdevice = File.read("/home/adam/.cryptdevice")
      if `cryptsetup luksOpen --key-file /home/adam/klucz.bin #{cryptdevice} crypt-tmp`
        tmp = `cryptsetup luksClose crypt-tmp`
        true
      else
        false
      end
    rescue => e
      # handle error
    end
  end
end