Question Un bijou pour un projet Rails


Je me suis retrouvé deux fois dans cette situation: j'installe un bijou sur mon système et je commence à l'utiliser depuis mon projet Rails. Finalement, je dois apporter des modifications à ce joyau. Comment dois-je procéder?

Idéalement, je voudrais vérifier le code source de ce joyau, comme ~ / third_party / gems, travailler dessus et que mon projet Rails l’utilise à la place. Est-ce possible?

Dans tous les cas, les gemmes étaient à github, donc je le ferais probablement à github, le cloner, faire mes chances et maintenir ma propre branche. Je suppose alors que j'installerais cette branche directement avec gem install sur mon serveur. Cela a-t-il du sens?


55
2017-10-17 17:27


origine


Réponses:


Aujourd'hui, c'est assez facile à faire avec Bundler. Vous faites une copie locale de la gem et puis au lieu de faire

gem "whatever"

dans votre Gemfile, vous faites:

gem "whatever", :path => "/home/pupeno/whatever"

Après avoir exécuté l'installation groupée, la gem est extraite de ce répertoire. Même si vous modifiez quelque chose, tout ce que vous devez faire pour le recharger est de redémarrer Rails.

Si vous devez déployer une application en utilisant vos propres modifications d'un Gem, vous créez un fork, sur Github ou similaire et sur le Gemfile que vous faites:

gem "whatever", :git => "git@github.com:/pupeno/whatever.git"

et c'est tout. C'est simple, simple et beau.


95
2017-10-01 09:46



Dans tous les cas, les gemmes étaient à github, donc je le ferais probablement à github, le cloner, faire mes chances et maintenir ma propre branche. Je suppose alors que j'installerais cette branche directement avec gem install sur mon serveur.

Si vous avez vraiment besoin de pirater la source réelle, alors oui, ce serait le moyen de le faire. Cependant, cela devrait être un dernier recours. Vous ne voulez pas conserver la gemme réelle si vous n'êtes pas obligé. Pourquoi ne pas étendre les classes à partir du gem source dont vous avez besoin pour changer de fonctionnalité et utiliser vos classes à la place des classes de gem dans votre code Rails?

Je trouve rare que vous ayez besoin de pirater directement du code tiers pour faire ce que vous devez faire. Un bon logiciel peut être étendu / facilement augmenté.


5
2017-10-17 17:58