2016-04-30 1 views
1

J'utilise la gemme Xeroizer et je veux corriger l'un des pull requests qui ajoute les fonctionnalités dont j'ai besoin.Comment est-ce que je peux patcher une classe à l'intérieur d'un module?

Il y a quatre validations sur cette requête, et pour certaines d'entre elles, il s'agit de patcher une classe dans un module. Est-il possible de le faire sans avoir à fourrer la gemme et de le maintenir pour toujours (ou jusqu'à ce que cette demande de tirage soit fusionnée)?

J'ai trouvé this question stackoverflow qui est similaire mais ne couvre pas tout à fait le même scénario, et this post qui traite des modules de patches, mais mes tentatives jusqu'ici ont fini soit briser la gemme ou tout simplement ne fonctionne pas.

+0

Ma réponse a-t-elle été utile? –

+0

J'ai trouvé une solution alternative à mon problème qui n'impliquait pas le monkeypatching, donc je n'ai jamais essayé votre suggestion car le problème de base n'est plus pertinent. Votre réponse est ce que je considérais à l'origine mais comme l'API obtient des mises à jour assez fréquentes, j'avais besoin d'une solution qui n'exclurait pas les futurs correctifs de la gemme de base. – bdx

+0

Pourriez-vous poster votre solution pour aider la communauté? –

Répondre

0

Ok c'est ce que vous pouvez faire

  1. Clone avec la commande git clone https://github.com/waynerobinson/xeroizer.git le repo quelque part sur votre système (permet de dire ~/Xeroizer pour faciliter l'exemple)
  2. Accédez ensuite à la prise en pension dans ce cas ~/Xeroizer
  3. le passage à la branche en question avec la commande git checkout add-balances-to-contact
  4. Ensuite, accédez à vos rails du projet
  5. dans votre éditeur ouvrir votre fichier de pierres précieuses
  6. Une fois dans votre fichier de pierres précieuses localiser la ligne où vous avez inclus le petit bijou Xeroizer il devrait ressembler à quelque chose comme gem 'xeroizer'
  7. Remplacez cette ligne dans votre fichier bijou avec gem "xeroizer", :path => "~/Xeroizer"
  8. Ensuite, enregistrez votre fichier de pierres précieuses et fermez votre éditeur
  9. Ensuite, exécutez bundle

Cela devrait vous donner la version de la gemme que vous voulez. Sinon, vous pouvez échanger sur commande de fichier de pierres précieuses à l'étape 7. de la liste ci-dessus avec cette commande

gem "xeroizer", :git => "[email protected]:waynerobinson/xeroizer.git", :branch => "add-balances-to-contact"

lancer dans votre fichier de pierres précieuses et bundle il suffit d'exécuter

Quant à votre question d'avoir à maintenir Pour toujours, la réponse est actuellement non, parce que cette branche a été fusionnée il ya quelques semaines, mais sinon il faudrait le maintenir dans une certaine mesure.


+0

Vous pouvez utiliser la fonction de sous-module de git pour obtenir vos modifications, sinon vous pourriez garder les arbres séparés et utiliser un script magique pour faire le patch pour vous. Cela ajoute la possibilité de faire des vérifications supplémentaires (tous ces fichiers existent-ils?). – ti7