2011-02-02 133 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

相關問題