C'è un modo per rilevare il sistema operativo in Ruby? Sto lavorando allo sviluppo di uno strumento di sketchup che dovrà rilevare MAC rispetto a WINDOWS.Sistemi Operativi Rilevamento in Ruby
risposta
È possibile utilizzare
puts RUBY_PLATFORM
irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
Ma @Pete è giusto.
voleva solo far sapere che, se si sta eseguendo un 32 bit rubino su un Windows a 64 bit, RUBY_PLATFORM vi mostrerà che l'architettura è a 32 bit. – max
RUBY_PLATFORM restituirà "java" quando si utilizza JRuby, indipendentemente dal sistema operativo. – robertodecurnex
Questo è sufficiente per qualcosa come rilevare se si è su OSX o meno. – Mosselman
È possibile controllare la costante RUBY_PLATFORM, ma in alcuni casi è inaffidabile, ad esempio quando si esegue JRuby. Altre opzioni includono catturare l'output del comando uname -a
su sistemi POSIX, o utilizzando una gemma di rilevamento, come sys-uname.
Qui è il migliore che ho visto di recente. È dal selenio. La ragione per cui penso sia la migliore è che usa il campo host_os rbconfig che ha il vantaggio di lavorare su MRI e JRuby. RUBY_PLATFORM dirà 'java' su JRuby indipendentemente dall'host su cui è in esecuzione. Sarà necessario modificare leggermente questo metodo:
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
Nizza, ma penso che si dovrebbe aggiornare la risposta a prendere nota di la gemma "os", che già affronta il problema JRuby che hai menzionato e ottiene questo codice di rilevamento del nostro codice base. See: http://stackoverflow.com/a/20579735/109561 – Gerry
Questo è anche un ottimo metodo se non puoi installa un gioiello a un sistema. Come nel caso in cui sto lavorando attualmente, dove sto costruendo uno script di sistema di basso livello che non ha accesso per installare nulla nel punto in cui ho bisogno di conoscere la versione os. <3 –
È possibile utilizzare il os
gemma:
gem install os
E poi
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.
Grazie per averlo trovato. Risposta fantastica :) Purtroppo, hai due anni di voti da recuperare. – Gerry
Puoi darci più dettagli su * perché * devi farlo? Spesso il rilevamento delle funzioni può essere più utile del rilevamento del sistema operativo globale. – Pete