Question

Supposons que dans une application Rails, vous utilisiez des gemmes dans votre application (nous les appellerons " des gemmes primaires ") et que vous avez vendu eux pour la portabilité.

Supposons que ces " gemmes primaires " requièrent également des gemmes qui leur sont propres. Nous les appellerons les " gemmes secondaires ".

Lorsque vous configurez votre environnement.rb, vous devez dire:

config.gem 'primary-gem'

pour l’un des joyaux que vous utilisez directement.

Mais avez-vous aussi besoin de le dire? . .

config.gem 'secondary-gem'

même si vous n'utilisez pas explicitement cette gemme dans votre application?

Ou suffit-il simplement d'inclure la pierre précieuse dans votre répertoire fournisseur / pierres précieuses pour qu'elle soit récupérée par votre application?

Était-ce utile?

La solution

Au moment du déploiement, rails connaît vos dépendances, donc si vous voulez geler vos gems, vous pouvez exécuter

rake gems:unpack:dependencies

pour les figer dans le répertoire du fournisseur.

Au moment de l’exécution, c’est le travail gems de charger ses dépendances. C’est généralement le cas pour les gems. Un config.gem 'primaire' devrait donc fonctionner.

Autres conseils

Non, vous n'avez pas ou du moins vous ne devriez pas. Chaque spécification GEM doit inclure sa propre liste de dépendances. Lorsque la gem primaire est installée, RubyGems installera automatiquement chaque dépendance de gem sur cascade.

En d'autres termes, si A nécessite B qui nécessite C + D, il vous suffit d'écrire

config.gem 'A'

Lorsque la commande

gem install A

est exécuté, RubyGems résoudra toutes les dépendances et les installera. Vous pouvez afficher toutes les dépendances A en cours d'exécution (à partir d'un projet Rails)

rake gems

Parfois, un auteur GEM peut oublier d'inclure certaines dépendances GEM dans la spécification. Dans ce cas, vous devez les spécifier dans votre fichier environment.rb pour forcer l'application à les installer. Bien entendu, il est également judicieux de contacter le responsable de GEM afin qu’il puisse résoudre le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top