检测操作系统的红宝石[复制](Detecting Operating Systems in Ruby

2019-06-26 16:57发布

这个问题已经在这里有一个答案:

  • 我如何才能找到我的Ruby程序运行在哪个操作系统? 10个回答

有没有一种方法来检测操作系统的红宝石? 我正在开发一个SketchUp的工具,将需要检测的Mac与Windows的。

Answer 1:

您可以使用os的宝石:

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



Answer 2:

这是我最近看过的最好的一个。 距离硒。 我认为这是最好的原因是它使用了对MRI和JRuby工作的优势rbconfig host_os场。 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


Answer 3:

您可以使用

puts RUBY_PLATFORM

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

但是@Pete是正确的。



Answer 4:

您可以检查RUBY_PLATFORM不变,但是这被称为是在某些情况下,运行JRuby时如不可靠的。 其他选项包括捕获的输出uname -a上POSIX系统命令,或使用检测宝石如SYS-UNAME 。



文章来源: Detecting Operating Systems in Ruby [duplicate]