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 ?
Réponses
Trop de publicités?
Ryan McGeary
Points
76053
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
pisaruk
Points
483
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
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