2017-06-14 1 views
1

J'utilise bundler sur mon gemfile pour l'exécution de l'application, et j'ai trouvé pratique d'utiliser bundler-only pour pouvoir choisir seulement un sous-ensemble de gemmes qui sont nécessaires uniquement pour les déploiements.Bundler et bundler-only - supprimer l'avertissement gem dupliqué

Donc, sur ma machine de déploiement, j'utilise bundle-only pour installer uniquement les gems nommés dans le groupe deploy. Cependant, à cause de cela, j'ai besoin de dupliquer une gemme (par exemple, mes déploiements doivent envoyer une notification à relâcher, donc j'ai quelques gems notifier à la fois dans mon espace de noms global et mon: plusieurs avertissements

Votre Gemfile énumère le jeu-notificateur de gemme (> = 0) plus d'une fois. vous devez garder probablement l'un d'entre eux. Bien que ce n'est pas un problème maintenant, cela pourrait provoquer des erreurs si vous changez la version de l'un d'eux plus tard

Existe-t-il un moyen de supprimer les avertissements? (Si possible, ces gemmes seulement)

Répondre

0

Une alternative est de maintenir une liste de tous groups, et inclure systématiquement , groups: groups

# Gemfile 
groups = [:deploy, :x, :y, :z, ...] # Maintain this list as you add groups 

# Gems needed except in deploy 
gem :a 
gem :b 
... 

# Gems that are also required for deploy 
gem :d1, groups: groups 
gem :d2, groups: groups 

# Gems that are required ONLY in deploy 

group :deploy do 
    gem :dep_only1 
    gem :dep_only2 
end 

Ainsi, les travaux suivants sans avertissement

bundle --without deploy # Will ignore deploy group 
bundle-only deploy # Will install only deploy gems including those that are also needed by the app 
1

Ne pas lister les gemmes plus d'une fois. Cet avertissement est là pour une bonne raison.

Vous pouvez les pierres précieuses du groupe sous plusieurs espaces de noms à la fois dans un Gemfile, comme ceci:

group :deploy, :somethingelse do 
    gem 'slack-notifier' 
end 

group :deploy do 
    # Deploy-ONLY gems 
end 

group :somethingelse 
    # Somethingelse-ONLY gems 
end 

Ou si vous préférez, vous pouvez le faire en ligne de regroupement:

gem 'slack-notifier', group: [:deploy, :somethingelse] 

Pour plus d'informations, lisez le bundler documentation sur les groupes Gemfile.

+0

L'avertissement ne connaît pas le 'paquet seulement 'gem qui est utilisé pour installer uniquement les gems listés sous un espace de noms donné. –

+0

C'est d'ailleurs le point. Vous n'avez toujours pas besoin de répertorier les gemmes plus d'une fois. Cela va à l'encontre des directives du bundler (d'où l'avertissement ci-dessus), et il n'est pas non plus recommandé dans [le fichier README "bundle-only" (https://github.com/MOZGIII/bundle-only). En listant la gemme 'slack-notifier' deux fois, vous créez un risque inutile de conflits de version futurs - par ex. lors de l'exécution d'une commande standard 'bundle install'. –

+0

Si vous souhaitez des conseils plus spécifiques sur la façon de structurer votre 'Gemfile' entier, vous pouvez l'inclure dans votre message - et je vais jeter un coup d'oeil. –