Que faites-vous lorsque vous souhaitez utiliser un joyau pour développer / tester que vous ne souhaitez pas forcer d'autres devs à utiliser? À l'heure actuelle, j'ai dans toute autre suggestion? Ou devrais-je simplement fournir ces jolis gemmes superficielles ...? P> Modifier strong> P> Pour être clair, je ne parle que de ces gemmes spécifiques, comme Redgreen , qui ne sont pas réellement utilisés dans le code fonctionnel, mais uniquement dans le processus de codage em>. Il n'est pas nécessaire de les fournir du tout, sauf pour éviter les besoins conditionnels. P> p> test_helper.rb code> et aucune configuration de gemme, mais cela ressemble à une approche maladroite, bien que fonctionnelle. J'aimerais faire quelque chose comme ce qui suit: p>
7 Réponses :
Si vous voulez que ce soit facultatif, il vaut mieux geler le gemme comme plugin. Cependant, ce n'est pas une bonne idée d'utiliser des pierres précieuses différentes que le reste d'une équipe de développement, car elle crée certaines incohérences dans le codeBase qui peuvent être difficiles à parcourir plus tard. Je dirais l'ajouter à config.gem et dis dire aux autres développeurs de faire: et vous avez terminé. P> p>
Comment utiliser Redgreen conduirait-il à des incohérences dans la base de code? Je pense vraiment à penser aux benchmarkers, à la sortie du sucre, etc., pas d'outils de codage. Évidemment, le code que vous utilisez doit être spécifié et / ou congelé.
Je pense que, quelles que soient les pierres précieuses que vous utilisez, l'ensemble de l'équipe de DEV devrait avoir la même suite, afin de garantir que les insectes et les problèmes soient constat entre toutes les plateformes. Par exemple, j'ai utilisé NewRelic RPM sur un projet et cela a provoqué des bogues que personne d'autre n'a rencontré.
Je ne vois pas vraiment comment il s'agit d'une solution pour que les gemmes soient nécessaires pour travailler avec Bundler
Voici comment j'ai abordé le même problème sous Rails 3.1. Dans mon gemfile: créer un fichier dans ./ TMP / code> (ou dans un dossier dans votre fichier .gitignore) de votre choix. J'ai utilisé
eric_dev_gems code>. Cela devrait être ignoré par GIT et n'existera que sur votre système, à moins que l'un de vos coéquipiers ne décide qu'il souhaite également créer ce fichier. P> p>
J'ai découvert cette méthode peut être ennuyeuse parce que mon gemfile.lock sera toujours différent des collègues. Il y a aussi un gotcha: quand nous avons déployé à Heroku, je ne pouvais pas pousser mes changements à cause de la différence gemfile.lock. Dans ce cas, je viens de renommé le fichier, Ran Bundle installer code>, puis repoussé (et renommé le fichier en arrière). Il est possible de faire un script pour le faire pour moi, mais je vais chercher une solution plus propre.
Pourquoi énumérez-vous WIREBLE, WIRB, HIRB, ... code> dans votre gemfile? Pourquoi ne pas simplement les installer localement ou dans le gemsset? Il n'y a pas de dépendance pour le code, ce n'est que votre machine de développement (et seulement votre) qui en a besoin.
J'ai essayé d'les installer au gemsset. Ils ne sont pas disponibles pour Rails Server code> et
Console de rails code>, comme les deux sont exécutés avec Bundle Exec - Corrigez-moi si je me trompe, bien que
OK, je pense que je suis arrivé avec quelque chose. Fondamentalement, l'idée est de n'exécuter qu'un gemfile secondaire lorsqu'une application Rails est en cours d'exécution. Pour ce faire, nous ajoutons deux choses:
Premièrement, nous modifions le script de rails un peu: p> second, nous disons que le Bundler est de tirer dans le gemfile secondaire si nous " Re dans une application Rails et un fichier secondaire existent: p> maintenant Vous pouvez ajouter un ** Veillez à ajouter gemfile.Local à votre .gitignore. p> p> gemfile.local code> à votre projet et exécuter des gemmes spécifiques sur un Base de la machine.
Bundle installer code> fonctionne normalement depuis que le
in_rails_app code> constante n'existe pas. p>
BTW, inspiration gemfile prise de: ici
Ceci est similaire à la solution que j'ai posté. Le problème avec les deux nos deux est que mon gemfile.lock code> est différent de celui de mes collègues. Tirant les changements de chacun signifie que nous devons faire
Bundle installer code>. Il en va de même pour que nous appuyions tous les deux à Heroku (il rejette les pousses avec différents
gemfile.lock code>). J'ai fait un script pour m'occuper d'une partie de cela lors de la poussée des changements, mais idéalement, j'aimerais utiliser quelque chose d'un peu plus élégant
Upvote pour le lien mais bon de savoir que ce problème a été demandé ailleurs et n'a pas une solution simple et évidente
Le gemfile.lock ne serait pas différent avec cette solution depuis que Bundy Install ne traiterait pas du tout avec le gemfile local. Donc, tous les verrous seraient les mêmes sur toutes les machines, mais l'application Rails ne démarrerait pas sans les gemmes ajoutées au gemfile.Local (sur la machine locale)
HM, je viens de l'essayer et il n'a pas chargé les pierres précieuses pour moi. Tu as raison que gemfile.lock n'était pas affecté cependant: p
rails s code> permet à l'application de démarrer même si les gemmes de gemfile.local ne sont pas installées?
Je ne l'ai testé que par rails C code>, mais je suppose que cela aurait le même lock-out.
Dans mes opinions, c'est ce que sont les environnements. Heureusement, il y a aussi une façon de le faire avec ce qui est dans votre gemfile, c'est aussi la façon dont les rails l'utilisent: des groupes
Utilisez à peu près les environnements de la même manière les rails l'utilisent. Voici ce que vous pouvez trouver dans votre gemfile: p> et voici ce que vous pouvez trouver dans votre config / application.rb p> Tout ce que vous devriez faire, c'est changer les paramètres de votre environnement local et les autres travaillant avec vous ne serez pas affectés à moins qu'ils ne détiennent. Tout se fait engager et rien ne se perd. P> Voici quelques liens:
http://yehudakatz.com/2010/ 05/09 / The-How-and-Wow-of-Bundler-Groupes /
http://gembondler.com/groups.html p> p>
Les gemmes spécifiques à votre environnement de développement doivent être installées dans votre gemme ou vos gemmes locales, mais pas dans le Un exemple classique est le [EDIT] P> En effet, tout est exécuté Le contexte du paquet et des gemmes extérieures ne sont pas accessibles. Il existe des solutions de contournement en effet. La plupart d'entre eux sont sale :) p> J'ai trouvé beaucoup de bonnes solutions dans ce Bundler Issue . P> La solution la plus belle consistait à ajouter ceci à votre J'espère que cela aide. p> p> gemfile code>.
ruby-débog-base19x code> quelle rubymine a besoin de débogage. Ceci est installé dans votre gemset local, mais pas dans le
gemfile code> car tous les codeurs n'utilisent pas de rubymine. P>
.irbrc code>: p>
WIRELLE code> au
gemset global code> gemset, il peut alors être trouvé.
Source originale: https://gist.github.com/794915 P>
C'est le comportement que je vois: 1. GEM Installez WIMBLE CODE> (installé sur le projet RVM Gemset). 2.
Console de rails Code> (Foulille non chargée) 3.
Liste de gemmes code> (à partir de la console intégrée, enveloppé dans des backtstics - Foulin non affichés 4. Quitter et
Liste de gemmes < / code> à partir de cli: filtre affiché. Peut-être que RVM peut être configuré pour éviter cela. Si vous pouvez comprendre que la prime est à vous
Je vois ce que tu veux dire. J'ai trouvé une solution de travail, j'espère que cela peut vous aider également.
Cela fonctionne pour moi. Je rencontre un problème spécifique à la CISR avec le gem code> wirb code>, mais qui pourrait être spécifique à la configuration. Je vais attendre les 24 dernières heures pour attribuer la prime, juste au cas où une solution très évidente super-propre apparaît.
Les groupes Bundler sont exactement ce dont nous avons besoin pour les dépendances de développement.
J'ai répondu à une question similaire à ma propre question ici
Bundler de niveau utilisateur Gemfile p>
Un moyen de faire cela consiste à créer des environnements différents: p> puis p>
Merci pour votre réponse. Cela ne changerait-il pas le gemfile.lock afin que je doive rejouer à nouveau avant de pousser?
Bonne question - oui il altère gemfile.lock. Mais je ne pense pas que c'est un problème. Par exemple, lorsque vous ajoutez RSPEC en mode test ajouté à la gemfile.lock, mais cela n'affecte pas prod
C'est un problème pour les utilisateurs de Heroku tels que moi-même, car gemfile.lock ne fait que répertorier toutes les gemmes que la machine dépend sans les séparer dans Dev / Production / Test. Heroku jette une erreur lorsque le téléchargement gemfile.lock ne correspond pas à sa version actuelle. Déploiement de ce sens signifie que je dois BUNDLE INSTALL -WITH-ENV = PRODUCTION CODE> à chaque fois avant de passer à la production et
Bundle installer code> avant de pousser à notre Dev Repo (sinon mon Les collègues devraient CODE> BUNDLE INSTALL CODE> Après avoir tiré pour obtenir partagé i> Dev / Test gems dans gemfile.lock)
"L'utilisation du groupe" Test "dans ce cas vous permet de spécifier les gemmes nécessaires pour tester votre application. Puisque vous n'aurez pas besoin de ces gemmes en production, vous pouvez accélérer l'installation en ignorant le groupe" Test ". Bundler fournit Cette capacité à travers l'option: Bundout Installation - Sans test Vous pouvez actuellement accéder à cette fonctionnalité sur Heroku en définissant la configuration de Bundle_without Var dans votre application. "
L'option Heroku est une nouvelle pour moi, merci de partager cela. Le problème avec l'utilisation d'un groupe Bundler de tout type est qu'il modifie gemfile.lock code>, nécessitant plus de travail de moi ou de mes collègues pour partager nos modifications parmi les autres. Cela résout le problème de Heroku, cependant, merci d'avoir partagé cette information cependant, je suis sûr que cela aidera les autres personnes ayant des besoins différents.
Je l'ai résolu en mettant cela dans mon fichier GEM: de cette façon, le gemme ne sera utilisé que si vous l'avez installé manuellement sur votre système. P> Cela fonctionne bien mais a l'inconvénient qu'il met le nom de gemme dans le gemfile.lock. Ceci est de peu de conséquence parce que le gemme n'est pas installé avec Si c'est un problème pour vous une autre option consiste à conserver le gemfile propre et besoin de la gemme de son chemin complet, ou vous pouvez ajouter le chemin pour simplement ce gemme. Comme ceci: p> Bundle installer code> mais il rend votre fichier de verrouillage un peu désordonné et que le fichier de verrouillage change un peu d'un développeur à la suivante. < / p>