检测ruby是否在Windows上运行的正确方法是什么?

时间:2011-02-02 06:12:16

标签: ruby windows

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

目前排名靠前的“红宝石检测窗口”的Google搜索结果都是错误的或过时的。例如,一种不正确的方法是:

RUBY_PLATFORM =~ /mswin/

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

什么是正确的方式?

3 个答案:

答案 0 :(得分:61)

事实证明,有this way

Gem.win_platform?

答案 1 :(得分:33)

首选项(根据@ 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。)

答案 2 :(得分:0)

(File::ALT_SEPARATOR || File::SEPARATOR) == '\\'