Подтвердить что ты не робот

Обнаружение операционных систем в Ruby

Есть ли способ обнаружить операционную систему в рубине? Я работаю над разработкой инструмента Sketchup, который должен будет обнаруживать MAC против WINDOWS.

4b9b3361

Ответ 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.