2 votes

Nécessite une version spécifique de RubyGems

Je souhaite disposer d'une version spécifique de RubyGems pour un projet. J'ai des tests qui échouent pour 2.5.x mais qui réussissent pour 2.6.x, donc je veux m'assurer que les utilisateurs utilisent 2.6.x ou plus. Je sais que vous pouvez mettre à jour explicitement la version de RubyGems, mais peut-on en quelque sorte "exiger" une version spécifique comme on peut le faire pour les gemmes classiques ?

2voto

Michael Gaskill Points 6720

Vous pouvez ajouter un contrôle de démarrage dans votre config/initializers qui empêchera Rails de démarrer l'application si la version de Ruby Gems est erronée.

Créer un nouveau fichier dans config/initializers/gem_version_check.rb et y ajouter ce code :

required_rubygems_version
if Gem.rubygems_version < Gem::Version.new(required_rubygems_version)
  raise RuntimeError,  "Ruby Gems version is #{Gem.rubygems_version}, but this project requires Ruby Gems >= #{required_rubygems_version} to be used."
end

Cela lèvera une exception et fera échouer l'initialisation de l'application si la version de Ruby Gems est erronée au démarrage.

/Users/spock/devo/games/config/initializers/gems_version_check.rb:3:in `' : La version de Ruby Gems est 2.4.8, mais ce projet nécessite Ruby Gems >= 2.6 pour être utilisé. (Erreur d'exécution)

Notez que cette opération s'exécute à chaque fois que le serveur Rails est démarré, et dans tous les environnements, ce qui permet de vérifier que les environnements de test et de production sont correctement configurés.

2voto

Dave Schweisguth Points 5138

Je ne crois pas qu'il soit possible de choisir entre plusieurs versions de rubygems dans une même installation de Ruby. Mais vous pouvez vous assurer que la version requise est utilisée. Placez ce qui suit à un endroit où il sera exécuté au début du démarrage de votre application, comme au début de votre Gemfile (qui est juste un fichier Ruby), ou au début d'un script qui n'utilise pas bundler :

required_rubygems_version = '2.6.0'
if Gem.rubygems_version < Gem::Version.create(required_rubygems_version)
  raise "Please upgrade to rubygems #{required_rubygems_version}"
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