¿Hay alguna forma de detectar el sistema operativo en ruby? Estoy trabajando en el desarrollo de una herramienta de bosquejo que necesitará detectar MAC vs. WINDOWS.Detección de sistemas operativos en Ruby
Respuesta
Puede utilizar
puts RUBY_PLATFORM
irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
Pero @Pete es correcto.
solo quería que la gente sepa que si ejecuta un rubí de 32 bits en una ventana de 64 bits, RUBY_PLATFORM le mostrará que la arquitectura es de 32 bits. – max
RUBY_PLATFORM devolverá "java" cuando utilice JRuby, independientemente del sistema operativo. – robertodecurnex
Esto es suficiente para algo así como detectar si está en OSX o no. – Mosselman
Puede inspeccionar RUBY_PLATFORM constante, pero se sabe que no es confiable en ciertos casos, como cuando se ejecuta JRuby. Otras opciones incluyen capturar el resultado del comando uname -a
en sistemas POSIX, o usar una gema de detección como sys-uname.
Aquí está el mejor que he visto recientemente. Es de selenio. La razón por la que creo que es la mejor es que usa el campo rbconfig host_os que tiene la ventaja de trabajar en MRI y JRuby. RUBY_PLATFORM dirá 'java' en JRuby independientemente del sistema operativo en el que se ejecuta. Usted tendrá que modificar ligeramente este método:
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
Bien, pero creo que debe actualizar su respuesta para tomar nota de la gema "os", que ya aborda el problema JRuby que mencionaste y obtiene este código de detección de nuestra base de código. Ver: http://stackoverflow.com/a/20579735/109561 – Gerry
Este es también un excelente método si no puede instalar una gema en un sistema. Como en el caso en el que estoy trabajando actualmente, donde estoy construyendo un script de sistema de bajo nivel que no tiene acceso para instalar nada en el punto donde necesito saber la versión del sistema operativo. <3 –
Puede utilizar el os
joya:
gem install os
Y luego
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.
Gracias por encontrar eso. Impresionante respuesta. :) Lamentablemente, tiene dos años de votos para ponerse al día. – Gerry
- 1. Comparación de sistemas operativos integrados?
- 2. Segmentación de memoria en sistemas operativos modernos
- 3. ¿Cómo se depuran los sistemas operativos?
- 4. R archivos de ayuda en diferentes sistemas operativos
- 5. Diferencia entre latencia y fluctuación en los sistemas operativos
- 6. ¿Cómo funcionan los sistemas operativos en tiempo real?
- 7. El nombre del grupo Todos en sistemas operativos no ingleses
- 8. Sistemas operativos en tiempo real para sistemas embebidos -> Buenos libros iniciales
- 9. Utilice un instalador de NSIS para instalar binarios de 32 bits en sistemas operativos de 32 bits y binarios de 64 bits en sistemas operativos de 64 bits.
- 10. Prueba del navegador: ¿vale la pena probar varios sistemas operativos?
- 11. ¿Es String.hashCode() portátil entre máquinas virtuales, JDK y sistemas operativos?
- 12. Cómo detectar adecuadamente los sistemas operativos Windows, Linux y Mac
- 13. ¿Qué sistemas operativos no liberarán memoria al salir del programa?
- 14. ¿Hay alguna diferencia en la representación de los principales navegadores en los sistemas operativos?
- 15. Dónde está el archivo de configuración de Subversion del usuario almacenada en los principales sistemas operativos?
- 16. PHP: una buena forma de universalizar las rutas en todos los sistemas operativos (direcciones inclinadas)
- 17. Importar archivos dll externos basados en sistemas operativos de 64 bits o 32 bits
- 18. ¿Cuál es la diferencia entre los modos de usuario y kernel en los sistemas operativos?
- 19. Haciendo iTerm para traducir 'meta-clave' de la misma manera que en otros sistemas operativos
- 20. ¿Qué fuente en Swing tiene el mismo aspecto en todos los sistemas operativos?
- 21. Detección de código muerto en ruby
- 22. ¿Cuántas páginas de memoria usan los compiladores de C en sistemas operativos de escritorio para detectar desbordamientos de pila?
- 23. Python abierta() Unicode comportamiento de nombre de archivo diferentes sistemas operativos a través de
- 24. lista predeterminada de tipos de letra que soporta Android, iOS y sistemas operativos de mora
- 25. En los sistemas operativos o navegadores son nombres font-familia CSS mayúsculas y minúsculas
- 26. Diferencias (si existen) entre el bloqueo directo y la inanición en los sistemas operativos
- 27. Flujo de trabajo de Git adecuado para sistemas operativos combinados y códigos privados?
- 28. ¿Existe una forma estándar, a través de los sistemas operativos, de agregar "etiquetas" a los archivos
- 29. Idiomas que usan para el desarrollo de sistemas operativos antes de C
- 30. ¿Qué sistemas operativos están disponibles para un microprocesador de 8 bits?
Puede darnos más detalles sobre * por qué * necesitas hacer esto? A menudo, la detección de funciones puede ser más útil que la detección general de sistemas operativos. – Pete