Détection des systèmes d’exploitation dans Ruby

Est-il possible de détecter le système d’exploitation dans Ruby? Je travaille sur le développement d’un outil de croquis qui devra détecter MAC vs WINDOWS.

Vous pouvez utiliser le gem os :

 gem install os 

Et alors

 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. 

Voir: https://github.com/rdp/os

Voici le meilleur que j’ai vu récemment. C’est du selenium. La raison pour laquelle je pense que c’est la meilleure est qu’elle utilise le champ host_os de rbconfig qui présente l’avantage de travailler sur l’IRM et sur JRuby. RUBY_PLATFORM indiquera “java” sur JRuby quel que soit l’hôte sur lequel il s’exécute. Vous devrez modifier légèrement 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 celle-ci n’est pas fiable dans certains cas, par exemple lors de l’exécution de JRuby. D’autres options incluent la capture de la sortie de la commande uname -a sur les systèmes POSIX ou l’utilisation d’un joyau de détection tel que sys-uname .