3

カスタムファクトモジュールを作成しようとしています:

Facter.add("something_status") do
  setcode do
    $string_to_parse = Facter::Util::Resolution.exec('somecommand --print ')
    ... do something to string
    return something-new
  end
end

ルビーにとって非常に新しい...これで何かをするための適切な構文は何でしょうか?

4

1 に答える 1

6

あなたはそれを行うことから遠く離れていません..変数名の前に $ は必要ありません。スコープの最新の var が Facter によって取得されます。

以下は、una​​me 出力を分析し、カーネル バージョンとその ipv6 サポートに関する文字列を含むファクトを返すサンプル コードです。

これは単なる例ですが、動作します。試してみました。

Facter.add("customer") do
  setcode do
    kernel_release = Facter::Util::Resolution.exec('/bin/uname -r')
    # Get version
    if kernel_release =~ /^3.2/
      answer = "Latest Kernel"  
    elsif kernel_release =~ /^3.0/
      answer = "3.0 Kernel"
    elsif kernel_release =~ /^2.6/
      answer = "Decent Kernel"
    else 
      answer = "Unknown Kernel"
    end
    if answer =~ /ipv6/       
      answer += " with IPV6 Support"
    else 
      answer += " without IPV6 Support"
    end
  end
end  

幸運を!

役立つリンク: Ruby Wikibooks Control Structuresより多くの ruby​​ 情報

于 2012-10-05T00:16:14.470 に答える