Rubyでオペレーティングシステムを検出する方法はありますか? MacとWindowsを検出する必要があるSketchupツールの開発に取り組んでいます。
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.
これが最近見た中で最高のものです。セレンからです。私がそれが最善だと思う理由は、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
使用できます
puts Ruby_PLATFORM
irb(main):001:0> Ruby_PLATFORM
=> "i686-linux"
しかし、@ Peteは正しい。
Ruby_PLATFORM定数を調べることができますが、これは、JRubyを実行しているときなど、特定のケースでは信頼できないことが知られています。他のオプションには、POSIXシステムでのuname -a
コマンドの出力のキャプチャ、または sys-uname などの検出gemの使用が含まれます。