我在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.")
}
}
答案 0 :(得分:3)
File.readline
包括行终止(在您的情况下,“\ n”)。 chomp
将摆脱行终止:
version = File.open('/opt/version', &:readline).chomp
调试时,如果要查看变量中的实际,请使用p
代替puts
。 p
将逃脱不可打印的字符,以便您可以看到它们:
puts "2.2\n" # => 2.2
#
p "2.2\n" # => "2.2\n"