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.
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 .