Gibt es eine Möglichkeit, das Betriebssystem in Ruby zu erkennen? Ich arbeite an der Entwicklung eines Sketchup-Tools, das MAC und WINDOWS erkennen muss.Erkennen von Betriebssystemen in Ruby
Antwort
können Sie
puts RUBY_PLATFORM
irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
verwenden Aber @Pete ist richtig.
wollte nur die Leute wissen lassen, dass RUBY_PLATFORM Ihnen zeigt, dass die Architektur 32 Bit ist, wenn Sie einen 32-Bit-Ruby auf einem 64-Bit-Fenster ausführen. – max
RUBY_PLATFORM gibt "java" zurück, wenn JRuby verwendet wird, unabhängig vom Betriebssystem. – robertodecurnex
Dies reicht aus, um festzustellen, ob Sie OSX verwenden oder nicht. – Mosselman
Sie können die RUBY_PLATFORM Konstante überprüfen, aber dies ist bekannt, in bestimmten Fällen unzuverlässig zu sein, z. B. wenn JRuby ausgeführt wird. Andere Optionen umfassen die Erfassung der Ausgabe des Befehls uname -a
auf POSIX-Systemen oder die Verwendung eines Erkennungs-Edelsteins wie sys-uname.
Hier ist der beste, den ich in letzter Zeit gesehen habe. Es ist von Selen. Der Grund, warum ich denke, dass es das Beste ist, ist, dass es das Feld rbconfig host_os verwendet, was den Vorteil hat, dass es an MRI und JRuby arbeitet. RUBY_PLATFORM wird auf JRuby "java" sagen, unabhängig davon, auf welchem Host es läuft. Sie müssen leicht, diese Methode optimieren:
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
Schön, aber ich denke, Sie sollten Ihre Antwort aktualisieren, um sich zu notieren das "os" -Gemein, das bereits das erwähnte JRuby-Problem anspricht und diesen Erkennungscode unserer Code-Basis erhält. Siehe: http://Stackoverflow.com/a/20579735/109561 – Gerry
Dies ist auch eine gute Methode, wenn Sie einen Edelstein in ein System installieren können. Wie in dem Fall, an dem ich gerade arbeite, wo ich ein Low-Level-Systemskript erstelle, das keinen Zugriff darauf hat, irgendetwas an dem Punkt zu installieren, wo ich die OS-Version kennen muss. <3 –
Sie können die os
gem verwenden:
gem install os
Und dann
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.
Danke, dass Sie das gefunden haben. Tolle Antwort. :) Leider haben Sie zwei Jahre der Abstimmung, um nachzuholen. – Gerry
Können Sie uns mehr Details um * warum * musst du das tun? Oft kann die Feature-Erkennung hilfreicher sein als die Erkennung von Blanket-Betriebssystemen. – Pete