48

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

4

4 に答える 4

60

これは私が最近見た中で最高のものです。セレン由来です。私が最高だと思う理由は、MRI と JRuby で動作する利点がある rbconfig の host_os フィールドを使用しているためです。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
于 2012-11-27T14:13:10.627 に答える
28

使用できます

puts RUBY_PLATFORM

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

しかし、@ピートは正しいです。

于 2012-08-02T19:07:45.223 に答える
3

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

于 2012-08-02T19:11:10.790 に答える