Detección de sistemas operativos en Ruby
operating-system detection (4)
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna forma de detectar el sistema operativo en ruby? Estoy trabajando en el desarrollo de una herramienta de sketchup que necesitará detectar MAC frente a WINDOWS.
Aquí está el mejor que he visto recientemente. Es de selenio. La razón por la que creo que es la mejor es que utiliza 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 que esté ejecutando. 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
Puede inspeccionar la constante RUBY_PLATFORM , pero se sabe que esto no es confiable en ciertos casos, como cuando se ejecuta JRuby. Otras opciones incluyen capturar la salida del comando uname -a
en sistemas POSIX, o usar una gema de detección como sys-uname .
Puedes usar
puts RUBY_PLATFORM
irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
Pero @Pete tiene razón.
Puedes usar la gema del os
:
gem install os
Y entonces
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.