98 votes

Comment puis-je savoir sur quel système d'exploitation tourne mon programme Ruby ?

Je veux que mon programme Ruby fasse des choses différentes sur un Mac et sur Windows. Comment puis-je savoir sur quel système mon programme s'exécute ?

7voto

Ryan McGeary Points 76053

Essayez le joyau Launchy ( gem install launchy ):

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

6voto

olleolleolle Points 1050

Mise à jour ! Ajout ! Rubygems est aujourd'hui livré avec Gem.win_platform? .

Exemples d'utilisation dans le repo Rubygems et celui-ci, pour plus de clarté :

def self.ant_script
  Gem.win_platform? ? 'ant.bat' : 'ant'
end

4voto

pisaruk Points 483
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

1voto

adamliesko Points 1781

Nous nous sommes bien débrouillés jusqu'ici avec le code suivant

  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

0voto

Dorian Points 1491

Utilisation de la os gem, lors du chargement de différents binaires pour IMGKit

# frozen_string_literal: true
IMGKit.configure do |config|
  if OS.linux? && OS.host_cpu == "x86_64"
    config.wkhtmltoimage =
      Rails.root.join("bin", "wkhtmltoimage-linux-amd64").to_s
  elsif OS.mac? && OS.host_cpu == "x86_64"
    config.wkhtmltoimage =
      Rails.root.join("bin", "wkhtmltoimage-macos-amd64").to_s
  else
    puts OS.report
    abort "You need to add a binary for wkhtmltoimage for your OS and CPU"
  end
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X