在Ruby中检测操作系统

有没有办法检测到ruby的操作系统? 我正在开发一个将需要检测MAC与WINDOWS的sketchup工具。

你可以使用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

这是我最近看到的最好的一个。 它来自selenium。 我认为最好的原因是它使用了rbconfig host_os字段,它具有在MRI和JRuby上工作的优势。 RUBY_PLATFORM将在JRuby上说'java',而不pipe它运行在哪个主机上。 你将需要适度调整这个方法:

  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 

您可以使用

puts RUBY_PLATFORM

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

但@Pete是对的。

您可以检查RUBY_PLATFORM常量,但是在某些情况下,比如在运行JRuby时,这被认为是不可靠的。 其他选项包括在POSIX系统上捕获uname -a命令的输出,或使用诸如sys-uname之类的检测gem。