2

PuppetでカスタムRuby関数を使用して、ファイルからテキストの文字列を読み取ります。読み取ったバージョンを既知のバージョンのリストと比較して、その特定のサーバーに使用する必要がある構成ファイルを決定します。問題は、読み取ったバージョンを既知のバージョンのリストと比較すると、どれも一致しないことです。

変数を画面に出力しましたが、見栄えがしました。次に、最初と最後に「-」を追加しました。今回は、次のように印刷されました。

-2.2#012-

誰かがこれが何であるか、そしてそれをどのように取り除くことができるか知っていますか?

これが私のプロセスです。

アプリのインストールを処理するスクリプト

sudo echo "2.2" > /opt/version

私のルビー機能

if FileTest.exists?("/opt/version")
    Facter.add("app_version") do
        setcode do
            version = File.open('/opt/version', &:readline)
            version
        end
     end
end

私の人形マニフェスト

if versioncmp( $app_version, '2.2') == 0 {
            notice("===> Installing 2.2 Configs")
        } elsif versioncmp ($app_version, '2.3') == 0 {
            notice("===> Installing 2.3 Configs")
        } else {
            notice("===> No version match.  Continuing on.")
        }
}
4

1 に答える 1

3

File.readline回線終了が含まれます(この場合、「\ n」)。 chomp回線の終了を取り除きます:

version = File.open('/opt/version', &:readline).chomp

デバッグするときに、変数に実際に何が含まれているかを確認したい場合は、のp代わりにを使用してくださいputsp印刷できない文字をエスケープして、表示できるようにします。

puts "2.2\n"    # => 2.2
                #
p "2.2\n"       # => "2.2\n"
于 2011-08-10T20:01:57.773 に答える