有没有办法检测ruby中的操作系统?我正在开发一个需要检测Mac与Windows的Sketchup工具。
答案 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.
答案 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。