在Ruby中检测操作系统

use*_*594 42 ruby operating-system detection sketchup

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

deb*_*bie 60

你可以使用osgem:

gem install os
Run Code Online (Sandbox Code Playgroud)

然后

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.
Run Code Online (Sandbox Code Playgroud)

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

  • 感谢您发现这一点。很棒的答案。:) 遗憾的是,你还有两年的时间要追赶。 (2认同)

小智 53

这是我最近看到的最好的一个.它来自硒.我认为它是最好的原因是它使用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
Run Code Online (Sandbox Code Playgroud)


Int*_*ess 22

您可以使用

puts RUBY_PLATFORM

irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
Run Code Online (Sandbox Code Playgroud)

但@Pete是对的.