web-dev-qa-db-ja.com

RubyがWindowsで実行されているかどうかを検出する正しい方法は何ですか?

RubyインタプリタがWindowsで実行されているかどうかを検出する正しい方法は何ですか?「正しい」には、1.8.x、1.9.x、 JRuby、Rubinius、IronRuby。

「Rubydetectwindows」の現在上位にランクされているGoogleの結果はすべて正しくないか、古くなっています。たとえば、それを行うための1つの誤った方法は次のとおりです。

Ruby_PLATFORM =~ /mswin/

MingwバージョンまたはWindowsのJRubyを検出できないため、これは正しくありません。

正しい方法は何ですか?

38
John

優先オプション(@ 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で機能することはわかっています)。

35
Dylan Markow

結局のところ、 このように

Gem.win_platform?
65
x-yuri