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
- 1. R su diversi sistemi operativi
- 2. Segmentazione della memoria nei moderni sistemi operativi
- 3. Come funzionano i sistemi operativi in tempo reale?
- 4. Android - Comportamento attività asincrona nei sistemi operativi 2.3.3 e 4.0
- 5. Macro di compilazione C++ per rilevare i sistemi operativi Windows
- 6. Differenza tra latenza e jitter nei sistemi operativi
- 7. cosa restituisce System.getProperty ("os.name") negli ultimi sistemi operativi Windows
- 8. Come rilevare correttamente i sistemi operativi Windows, Linux e Mac
- 9. Quali sistemi operativi non liberano memoria all'uscita dal programma?
- 10. WPF: perché il mio colore in primo piano sembra diverso sotto diversi sistemi operativi
- 11. Come decomprimere il file in Python su tutti i sistemi operativi?
- 12. Python open() unicode comportamento nome di file diversi sistemi operativi in tutta
- 13. Ruby on Rails, rilevamento Javascript
- 14. Rilevamento di codice guasto in ruby
- 15. Rilevamento di dispositivi di archiviazione SSD su sistemi POSIX
- 16. Su quali sistemi operativi o browser sono nomi font-family CSS
- 17. Linguaggio più rispettato e compilatore gratuito per la creazione di sistemi operativi per hobby?
- 18. Dove si trova il file di configurazione di Subversion dell'utente memorizzato nei principali sistemi operativi?
- 19. C'è un modo standard, tra sistemi operativi, di aggiungere "tag" ai file
- 20. Condividere un progetto PyCharm su più sistemi operativi (diversi percorsi di interprete)
- 21. È possibile utilizzare il compilatore Go per distribuire un file eseguibile per altri sistemi operativi?
- 22. malloc in sistemi embedded
- 23. Qual è la newline universale per tutti i sistemi operativi? (LF e CR)
- 24. Qual è la differenza tra le modalità utente e kernel nei sistemi operativi?
- 25. Rilevamento automatico della console in perl
- 26. Le opzioni della riga di comando nei sistemi operativi in stile POSIX devono essere in stile underscore?
- 27. I core (livello di astrazione del dispositivo) dei sistemi operativi scritti interamente in C? (Come: "UNIX è scritto in C")
- 28. Diventare operativi in Prolog in fretta
- 29. Qual è l'efficacia dell'utilizzo della funzionalità di compatibilità per i sistemi operativi precedenti in Windows XP, Vista, 7 e 8?
- 30. Quali sono le migliori pratiche per la creazione di distribuzioni Python (uova) su (e per) più sistemi operativi
Puoi darci più dettagli su * perché * devi farlo? Spesso il rilevamento delle funzioni può essere più utile del rilevamento del sistema operativo globale. – Pete