Есть ли способ обнаружить операционную систему в рубине? Я работаю над разработкой инструмента Sketchup, который должен будет обнаруживать MAC против WINDOWS.
Обнаружение операционных систем в Ruby
Ответ 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
Ответ 2
Вот лучший, который я видел недавно. Это от селена. Причина, по которой я думаю, что это лучший, - это использование поля rbconfig host_os, которое имеет преимущество в работе над МРТ и JRuby. RUBY_PLATFORM будет говорить "java" на JRuby независимо от того, на каком хосте он работает. Вам нужно будет мягко настроить этот метод:
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
Ответ 3
Вы можете использовать
puts RUBY_PLATFORM
irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
Но @Pete прав.
Ответ 4
Вы можете проверить константу RUBY_PLATFORM, но в некоторых случаях это известно как ненадежное, например, при запуске JRuby. Другие варианты включают в себя захват вывода команды uname -a
в системах POSIX или использование драгоценного камня обнаружения, такого как sys-uname.