私の Ruby プログラムは、Windows と Mac で異なることをしたいと思っています。自分のプログラムがどのシステムで実行されているかを調べるにはどうすればよいですか?
39301 次
11 に答える
151
定数を使用し、RUBY_PLATFORM
必要に応じてモジュールにラップして、より使いやすくします。
module OS
def OS.windows?
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
end
def OS.mac?
(/darwin/ =~ RUBY_PLATFORM) != nil
end
def OS.unix?
!OS.windows?
end
def OS.linux?
OS.unix? and not OS.mac?
end
def OS.jruby?
RUBY_ENGINE == 'jruby'
end
end
完璧ではありませんが、私が開発を行っているプラットフォームではうまく機能し、拡張も簡単です。
于 2008-10-04T21:17:49.323 に答える
17
また
irb(main):002:0> require 'rbconfig'
=> true
irb(main):003:0> Config::CONFIG["arch"]
=> "i686-linux"
また
irb(main):004:0> RUBY_PLATFORM
=> "i686-linux"
于 2008-10-04T20:41:57.993 に答える
11
争いに選択肢を追加するという 2 番目の答えがあります。 os rubygemとそのgithub ページには、関連するプロジェクトのリストがあります。
「OS」が必要 >> OS.windows? => true # または OS.doze? >> OSビット => 32 >> OS.java? => true # jruby で実行している場合。OS.jrubyも? >> OS.ruby_bin => "c:\ruby18\bin\ruby.exe" # または "/usr/local/bin/ruby" またはそうでないもの >> OS.posix? => false # Linux、os x、cygwin の場合は true >> OS.mac? #またはOS.osx?またはOS.x? =>偽
于 2014-01-13T02:28:00.447 に答える
7
Launchy gem(gem install launchy
)を試してください:
require 'launchy'
Launchy::Application.new.host_os_family # => :windows, :darwin, :nix, or :cygwin
于 2008-10-05T00:18:39.740 に答える
4
require 'rbconfig'
include Config
case CONFIG['host_os']
when /mswin|windows/i
# Windows
when /linux|arch/i
# Linux
when /sunos|solaris/i
# Solaris
when /darwin/i
#MAC OS X
else
# whatever
end
于 2012-10-17T15:22:08.743 に答える
2
これまでのところ、次のコードでかなりうまくいっています
def self.windows?
return File.exist? "c:/WINDOWS" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /mingw32/ || RUBY_PLATFORM =~ /mswin32/
end
def self.linux?
return File.exist? "/usr" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /linux/
end
def self.os
return :linux if self.linux?
return :windows if self.windows?
nil
end
于 2016-01-19T16:09:43.047 に答える