从Ruby内部检测解释器是否在Windows上运行的正确方法是什么?"正确"包括它适用于所有主要的Ruby风格,包括1.8.x、 1.9.x、 JRuby、Rubinius和IronRuby.
目前排名靠前的"ruby detect windows"谷歌搜索结果都不正确或过时.例如,一种不正确的方法是:
RUBY_PLATFORM =~ /mswin/
这是不正确的,因为它无法检测Windows上的mingw版本或JRuby.
正确的方法是什么?
从Ruby内部检测解释器是否在Windows上运行的正确方法是什么?"正确"包括它适用于所有主要的Ruby风格,包括1.8.x、 1.9.x、 JRuby、Rubinius和IronRuby.
目前排名靠前的"ruby detect windows"谷歌搜索结果都不正确或过时.例如,一种不正确的方法是:
RUBY_PLATFORM =~ /mswin/
这是不正确的,因为它无法检测Windows上的mingw版本或JRuby.
正确的方法是什么?
首选选项(Updated based on @John's recommendations):
require 'rbconfig'
is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
这也可以工作,但不太可靠(在旧版本中不起作用,环境变量可以修改)
is_windows = (ENV['OS'] == 'Windows_NT')
(我无法在列出的所有Ruby上轻松测试,也无法在Windows 7之外的任何系统上测试,但我知道这两种系统都适用于1.9.x、IronRuby和JRuby).