ventajas sintaxis rails programas lenguaje ejemplos desventajas descargar como ruby operating-system

rails - sintaxis de lenguaje ruby



¿Cómo puedo encontrar en qué sistema operativo se está ejecutando mi programa Ruby? (9)

Quiero que mi programa Ruby haga cosas diferentes en una Mac que en Windows. ¿Cómo puedo averiguar en qué sistema se está ejecutando mi programa?


(Advertencia: lea el comentario de @Peter Wagenet) Me gusta esto, la mayoría de las personas usan rubygems , es confiable, es multiplataforma

irb(main):001:0> Gem::Platform.local => #<Gem::Platform:0x151ea14 @cpu="x86", @os="mingw32", @version=nil> irb(main):002:0> Gem::Platform.local.os => "mingw32"

actualizar el uso junto con "¡Actualización! ¡Adición! Rubygems hoy en día ..." para mitigar cuando Gem::Platform.local.os == ''java''


Cuando solo necesito saber si es un SO Windows o Unix, a menudo es suficiente

is_unix = is_win = false File::SEPARATOR == ''/'' ? is_unix = true : is_win = true


Hasta ahora nos ha ido muy bien con el siguiente código

def self.windows? return File.exist? "c:/WINDOWS" if RUBY_PLATFORM == ''java'' RUBY_PLATFORM =~ /mingw32/ || RUBY_PLATFORM =~ /mswin32/ end def self.linux? return File.exist? "/usr" if RUBY_PLATFORM == ''java'' RUBY_PLATFORM =~ /linux/ end def self.os return :linux if self.linux? return :windows if self.windows? nil end


Tengo una segunda respuesta para agregar más opciones al combate. El os rubygem , y la página github tiene una lista de proyectos relacionados.

require ''os'' >> OS.windows? => true # or OS.doze? >> OS.bits => 32 >> OS.java? => true # if you''re running in jruby. Also OS.jruby? >> OS.ruby_bin => "c:/ruby18/bin/ruby.exe" # or "/usr/local/bin/ruby" or what not >> OS.posix? => false # true for linux, os x, cygwin >> OS.mac? # or OS.osx? or OS.x? => false


Ya sea

irb(main):002:0> require ''rbconfig'' => true irb(main):003:0> Config::CONFIG["arch"] => "i686-linux"

o

irb(main):004:0> RUBY_PLATFORM => "i686-linux"



Prueba la joya Launchy ( gem install launchy ):

require ''launchy'' Launchy::Application.new.host_os_family # => :windows, :darwin, :nix, or :cygwin


Use la constante RUBY_PLATFORM y, opcionalmente, envuélvala en un módulo para que sea más amigable:

module OS def OS.windows? (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil end def OS.mac? (/darwin/ =~ RUBY_PLATFORM) != nil end def OS.unix? !OS.windows? end def OS.linux? OS.unix? and not OS.mac? end end

No es perfecto, pero funciona bien para las plataformas en las que desarrollo, y es bastante fácil de ampliar.


require ''rbconfig'' include Config case CONFIG[''host_os''] when /mswin|windows/i # Windows when /linux|arch/i # Linux when /sunos|solaris/i # Solaris when /darwin/i #MAC OS X else # whatever end