从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).

Ruby相关问答推荐

指南针手表:未定义的方法存在吗?对于文件:类

将数组转换 for each 元素的嵌套哈希

Python 正则表达式是否等同于 Ruby 的原子分组?

是否有类似于 Ruby 的 Sinatra 的 .NET 框架?

退出(exit)和中止(abort)有什么区别?

Ruby 中有类似 Python 生成器的东西吗?

如何在 ruby​​ 中编写负循环,例如 for(i=index; i >= 0; i --)

为什么 Matz Select 在 Ruby 中默认使字符串可变?

如何在不按 Enter 的情况下获取单个字符?

Ruby Koan 151 引发异常

从 Ruby 中的字符串创建不区分大小写的正则表达式

用元素填充数组 N 次

如何获取当前 rake 任务的 PID?

困惑,像python,ruby这样的语言是单线程的吗?不像说java? (对于网络应用程序)

如何在 Ruby 中取消定义类?

判断散列的键是否包含所有键集

在 Ruby 中,获取数组中最大值的索引的最简洁方法是什么?

Ruby 哈希白名单过滤器

Ruby 实例变量何时设置?

解析带有标题字段的 CSV 文件作为每行的属性