À mon humble avis, le meilleur moyen est d'essayer de charger/exiger du GEM et de sauvetage de l'Exception, Ray a déjà montré. Il est sûr de sauver la LoadError exception car elle n'est pas soulevée par le BIJOU lui-même, mais c'est le comportement standard de l'exiger de commande.
Vous pouvez également utiliser la gemme de commande à la place.
begin
gem "somegem"
# with requirements
gem "somegem", ">=2.0"
rescue Gem::LoadError
# not installed
end
Le joyau de la commande a le même comportement de l'exiger de commande, avec quelques légères différences. Autant que je sache, il essaie toujours d'autoload le principal JOYAU de fichier.
Creuser dans le rubygems.rb fichier (ligne 310), j'ai trouvé la suite de l'exécution
matches = Gem.source_index.find_name(gem.name, gem.version_requirements)
report_activate_error(gem) if matches.empty?
Il peut vous fournir quelques conseils sur la façon de faire un gros chèque, sans réellement le chargement de la bibliothèque.