Для чего-то легкодоступного в большинстве инсталляций Ruby, которое уже несколько обработано для вас, я рекомендую следующее:
Gem::Platform.local.os
# => например. "mingw32", "java", "linux", "cygwin", "aix", "dalvik" ( код )
Gem.win_platform?
# => например. правда, ложь ( код )
И эти, и любые другие известные мне скрипты проверки платформ основаны на интерпретации этих базовых переменных:
RbConfig::CONFIG["host_os"]
# => например. "linux-gnu" (код 1 , 2 )
RbConfig::CONFIG["arch"]
# => например. «i686-linux», «i386-linux-gnu» (передается как параметр при компиляции интерпретатора Ruby )
RUBY_PLATFORM
# => например. "i386-linux-gnu", "darwin" - Обратите внимание, что это возвращает "java" в JRuby! ( code )
- Это все варианты Windows:
/cygwin|mswin|mingw|bccwin|wince|emx/
RUBY_ENGINE
# => например. "ruby", "jruby"
Библиотеки доступны, если вы не против зависимости и хотите что-то более удобное для пользователя. В частности, OS предлагает такие методы, как OS.mac?
или OS.posix?
. Платформа может хорошо различать различные платформы Unix. Platform::IMPL
вернется, например. : linux,: freebsd,: netbsd,: hpux. sys-uname и sysinfo аналогичны. utilinfo чрезвычайно прост и может работать в любых системах, кроме Windows, Mac и Linux.
Если вам нужны более продвинутые библиотеки с конкретными сведениями о системе, например, с различными дистрибутивами Linux, см. Мой ответ для Определение дистрибутива Linux в Ruby .