在Ruby中检测操作系统

时间:2012-08-02 19:04:09

标签: ruby operating-system detection sketchup

有没有办法检测ruby中的操作系统?我正在开发一个需要检测Mac与Windows的Sketchup工具。

4 个答案:

答案 0 :(得分:58)

您可以使用os gem:

gem install os

然后

require 'os'
OS.linux?   #=> true or false
OS.windows? #=> true or false
OS.java?    #=> true or false
OS.bsd?     #=> true or false
OS.mac?     #=> true or false
# and so on.

请参阅:https://github.com/rdp/os

答案 1 :(得分:51)

这是我最近看到的最好的一个。它来自硒。我认为它是最好的原因是它使用rbconfig host_os字段,它具有在MRI和JRuby上工作的优势。 RUBY_PLATFORM会在JRuby上说'java',无论它运行的主机是什么。你需要温和地调整这个方法:

  require 'rbconfig'

  def os
    @os ||= (
      host_os = RbConfig::CONFIG['host_os']
      case host_os
      when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
        :windows
      when /darwin|mac os/
        :macosx
      when /linux/
        :linux
      when /solaris|bsd/
        :unix
      else
        raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
      end
    )
  end

答案 2 :(得分:20)

您可以使用

puts RUBY_PLATFORM

irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"

但@Pete是对的。

答案 3 :(得分:1)

您可以检查 RUBY_PLATFORM 常量,但在某些情况下(例如运行JRuby时),这已知不可靠。其他选项包括在POSIX系统上捕获uname -a命令的输出,或使用sys-uname等检测gem。