我在终端和ruby记录器中使用colored
gem进行彩色打印。我需要在linux和windows上运行此代码。
在Windows上,我必须先require 'win32console'
,否则彩色打印不起作用(我只看到ANSI转义字符)。但是,如果我在Linux上需要win32console,它显然会中断。
在红宝石中处理这种情况的常用方法是什么?我注意到了RUBY_PLATFORM
变量,但是在Windows VM上我尝试过"i386-mingw32"
或者奇怪的东西。使用它加上一个条件似乎是一个非常好的方式来满足我的需要,所以我希望这个问题有一个更好的解决方案。
答案 0 :(得分:2)
使用RUBY_PLATFORM没有错,这是它的目的。 你也可以问一下操作系统本身,对于那些
的窗口ENV['OS']
在Vista上提供“Windows_NT”。
不知道其他操作系统的对应物。
另见:
答案 1 :(得分:1)
总是:
begin
require 'win32console'
rescue LoadError
end
我发现这更容易编写和推理,试图自己决定我在哪个操作系统以及是否加载它。
更新:我认为win32console是内置的而不是gem。我相信Win32API适用于所有Windows安装,因此它是测试“这个Windows吗?”的好代理。 (而不是“这是什么操作系统,是Windows?”)。
begin
require 'Win32API'
windowsOS = true
rescue LoadError
windowsOS = false
end
if windowsOS
begin
require 'win32console'
rescue LoadError
# Prompt user to install win32console gem
end
end