web-dev-qa-db-fra.com

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

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.

41
user1546594

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.

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

58
debbie

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
52
Thomas Enebo

Vous pouvez utiliser

puts Ruby_PLATFORM

irb(main):001:0> Ruby_PLATFORM
=> "i686-linux"

Mais @Pete a raison.

21

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 .

1
Todd A. Jacobs