什么是正确的方式来检测如果ruby运行在Windows上?

从Ruby内部检测解释器是否在Windows上运行的正确方法是什么? “正确”包括它适用于所有主要的Ruby,包括1.8.x,1.9.x,JRuby,Rubinius和IronRuby。

目前排名最高的谷歌“ruby检测窗口”的结果是不正确的或过时的。 例如,一个不正确的方法是:

RUBY_PLATFORM =~ /mswin/ 

这是不正确的,因为它无法检测到mingw版本,或Windows上的JRuby。

什么是正确的方法?

Solutions Collecting From Web of "什么是正确的方式来检测如果ruby运行在Windows上?"

首选选项(根据@ John的建议更新)

 require 'rbconfig' is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/) 

这也可以工作,但不太可靠(它不适用于更旧的版本,并且可以修改环境变量)

 is_windows = (ENV['OS'] == 'Windows_NT') 

(我不能轻易测试所有列出的红宝石,或者除Windows 7之外的任何其他红宝石,但我知道这两者都适用于1.9.x,IronRuby和JRuby)。

事实证明,这是这样的 :

 Gem.win_platform?