web-dev-qa-db-ja.com

Rubyでのオペレーティングシステムの検出

Rubyでオペレーティングシステムを検出する方法はありますか? MacとWindowsを検出する必要があるSketchupツールの開発に取り組んでいます。

41
user1546594

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

58
debbie

これが最近見た中で最高のものです。セレンからです。私がそれが最善だと思う理由は、rbconfig Host_osフィールドを使用することです。これには、MRIとJRubyで作業する利点があります。 Ruby_PLATFORMは、実行中のホストOSに関係なく、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
52
Thomas Enebo

使用できます

puts Ruby_PLATFORM

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

しかし、@ Peteは正しい。

Ruby_PLATFORM定数を調べることができますが、これは、JRubyを実行しているときなど、特定のケースでは信頼できないことが知られています。他のオプションには、POSIXシステムでのuname -aコマンドの出力のキャプチャ、または sys-uname などの検出gemの使用が含まれます。

1
Todd A. Jacobs