jruby获取运行的操作系统

最近在写PHP时,通过PHP_OS来判断当前的操作系统是在Windows下还是类Unix操作系统下,我当时想如果使用Ruby该怎么判断当前的操作系统呢?于是在工作之余,搜索了一下Google,在javaeye上找到了一篇robbin的老帖子:[url=http://www.iteye.com/topic/160756]获取ruby运行的操作系统版本[/url]。
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变量中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值