2009-12-02 4 views
7

Je construis une gemme qui a besoin d'un gems JSON installé pour que cela fonctionne. Peu importe quel gson json: json_pure, json-jruby, ou le json basé sur C.Dépendance conditionnelle dans Ruby Gemspec

Existe-t-il un bon moyen de définir ceci dans un gemspec? This response suggère de conserver une gemme complètement distincte pour chaque version, mais il semble qu'il y ait une meilleure solution.

Quelqu'un a-t-il une expérience avec ceci?

Devrais-je simplement utiliser l'option spec.requirements pour signaler à l'utilisateur qu'il a besoin d'un joyau json?

Répondre

2

Oui, je suggère une simple exigence de texte dans spec.requirements. Je recommanderais également une sorte de chargement-enchaînement quand la gemme charge d'abord:

# in init.rb and/or rails/init.rb: 
unless Object.const_defined?(:JSON) 
    begin 
    require 'json_pure' 
    rescue LoadError 
    begin 
     require 'json-ruby' 
    rescue LoadError 
     require 'json' 
    end 
    end 
end 
unless Object.const_defined?(:JSON) 
    raise "Could not load gem MyGem; did you install one of json_pur, json-ruby, or the C-based json library?" 
end 
+0

Cela semble être une bonne idée. La bonne chose avec toutes les gemmes JSON, c'est que vous avez juste besoin de 'json', cela simplifiera le chargement. –

Questions connexes