Existe-t-il un moyen de détecter le système d'exploitation dans Ruby? Je travaille sur le développement d'un outil de sketchup qui devra détecter Mac contre Windows.
Vous pouvez utiliser la gemme os
:
gem install os
Puis
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.
Voici le meilleur que j'ai vu récemment. C'est du sélénium. La raison pour laquelle je pense que c'est le meilleur est qu'il utilise le champ rbconfig Host_os qui a l'avantage de travailler sur l'IRM et JRuby. Ruby_PLATFORM dira "Java" sur JRuby quel que soit l'hôte OS sur lequel il s'exécute. Vous devrez légèrement modifier cette méthode:
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
Vous pouvez utiliser
puts Ruby_PLATFORM
irb(main):001:0> Ruby_PLATFORM
=> "i686-linux"
Mais @Pete a raison.
Vous pouvez inspecter la constante Ruby_PLATFORM , mais cela n'est pas fiable dans certains cas, comme lors de l'exécution de JRuby. Les autres options incluent la capture de la sortie du uname -a
commande sur les systèmes POSIX, ou en utilisant une gemme de détection telle que sys-uname .