2011-02-02 127 views
31

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

目前排名前列的“ruby detect windows”结果全部不正确或过时。例如,一个不正确的方式来做到这一点是:

RUBY_PLATFORM =~ /mswin/ 

这是不正确,因为它不能检测MinGW的版本,或JRuby的Windows上。

什么是正确的方法?

+7

为了完整起见:另一个** **错误的方式,我看到的往往是`RUBY_PLATFORM =〜/ WIN /`,它也错过了MinGW的端口(是现在每个人实际使用的那个),更糟糕的是,它们也与达尔文(即OSX)相匹配。 – 2011-02-02 12:05:41

回答

31

首选方案(更新基于@约翰的建议)

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

这也可以工作,但不太可靠(它不会与更老版本的工作,以及环境变量可以是修改)

​​

(我不能方便地测试或者各上市,或任何东西,但Windows 7中的红宝石,但我知道,这两个会为1.9.x的,IronRuby的,和JRuby工作)。

+0

不完整(freakin'需要的最小字符数) – akostadinov 2016-05-09 16:36:50

51

事实证明,有this way

Gem.win_platform? 
+1

真棒,简单并且工作正常! – 2014-07-04 09:04:08

相关问题