最近在写PHP时,通过PHP_OS来判断当前的操作系统是在Windows下还是类Unix操作系统下,我当时想如果使用Ruby该怎么判断当前的操作系统呢?于是在工作之余,搜索了一下Google,在javaeye上找到了一篇robbin的老帖子:
获取ruby运行的操作系统版本。
robbin通过使用环境变量RUBY_PLATFORM当中获得操作系统信息,代码简洁明了,我在MRI下试验通过,可惜在JRuby下不行,因为JRuby中的RUBY_PLATFORM在所有操作系统下都显示java,无法判断真实的操作系统。
在搜索的过程中,我找到了另一种判断ruby的操作系统的方法,那就是使用rbconfig,代码如下:
require 'rbconfig'
def windows?
!(Config::CONFIG['target_os']=~/mswin32/).nil?
end
通过以上代码就可以在JRuby下判断当前操作系统了,在MRI也可以运行。
原理是什么呢?在MRI中,我们可以在lib\ruby\1.8\i386-mswin32目录下(linux下是x86_64-linux)找到rbconfig.rb。在JRuby中却找不到这个文件,通过查看JRuby的源代码发现,在目录src\org\jruby\libraries下有一个RbConfigLibrary.java,代码是通过调用JVM中os.name的Property来动态判断当前的操作系统,并填充到CONFIG变量中。
分享到:
相关推荐
您的操作系统可能在程序包管理器中提供了JRE和JRuby,但是您可能会发现此版本非常旧。 一种替代方法是使用。 对于您将需要插件。 您可能会发现系统软件包管理器可以提供这些。 要查看可用的JRuby版本,请运行: $ ...
WiiRemoteJ 在某些操作系统上可能无法正常工作或根本无法正常工作。 此类问题似乎取决于底层蓝牙堆栈。 您将需要获取 WiiRemoteJ jar 和任何所需的蓝牙库。 请查看了解详细信息。 请注意,WiiRemoteJ
WiiUseJ 在某些操作系统上可能无法正常工作或根本无法正常工作。 此类问题似乎取决于底层蓝牙堆栈。 您将需要获取 WiiUseJ jar 和任何所需的蓝牙库。 详情请查看。 WiiUseJRuby 假设您已经使用所需的 WiUseJ 文件...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...
DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...