论坛首页 编程语言技术论坛

获取ruby运行的操作系统版本

浏览 6228 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-31  
记得前面有人问过这个问题,但是没有搜索到。我原来判断ruby究竟是运行在Windows上面还是Linux上面的办法比较土:

def win32?
  require 'Win32API'
  return true
rescue LoadError
  return false
end


让ruby尝试加载Wind32API,如果成功就是Windows,否则就是Unix类操作系统。今天发现一个更好的办法:
def windows?
!(RUBY_PLATFORM =~ /win32/).nil?
end


原来可以从环境变量RUBY_PLATFORM当中获得操作系统信息,比方说Windows上面是i386-mswin32,而我们的服务器上面是x86_64-linux,你打印一下就知道了:

ruby -e "puts RUBY_PLATFORM"


作为一个小的编程技巧分享给大家。
   发表时间:2008-01-31  
对,还可以用这个方法判断是否运行在JRuby环境下。
JRuby环境下RUBY_PLATFORM的值是“java”,Windows和Linux上都一样。以前我用这个方法确定是使用ActiveRecord native的数据库driver还是使用ActiveRecord-JDBC。
0 请登录后投票
   发表时间:2008-01-31  
这个貌似只是给出你的ruby解释器所运行的平台,而不是操作系统..比如"i386-cygwin "

ruby way中,给了一个比较完全的程序,不过这边的ming不懂是那个操作系统:

def os_family
  case RUBY_PLATFORM
    when /ix/i, /ux/i, /gnu/i,
         /sysv/i, /solaris/i,
         /sunos/i, /bsd/i
      "unix"
    when /win/i, /ming/i
      "windows"
    else
      "other"
  end
end
0 请登录后投票
   发表时间:2008-01-31  
simohayha 写道
这个貌似只是给出你的ruby解释器所运行的平台,而不是操作系统..比如"i386-cygwin "

ruby way中,给了一个比较完全的程序,不过这边的ming不懂是那个操作系统:

def os_family
  case RUBY_PLATFORM
    when /ix/i, /ux/i, /gnu/i,
         /sysv/i, /solaris/i,
         /sunos/i, /bsd/i
      "unix"
    when /win/i, /ming/i
      "windows"
    else
      "other"
  end
end

mingw?
0 请登录后投票
   发表时间:2008-01-31  
谢谢楼主!! 谢谢上面各层楼的朋友!!
终于知道怎么做了!!
谢谢大家!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics