L'histoire jusqu'à présent:Comment résoudre namespace modèle Rails collision
J'ai une application rails avec un modèle nommé « terme ». Tout va bien jusqu'à essayer d'installer le concombre. Lors de l'exécution
rake cucumber
Je reçois
Term is not a class (TypeError)
Cela se produit parce que le concombre comprend un petit bijou, «terme-ANSIColor (à faire la sortie de texte nifty de couleur dans la console), et la durée-ANSIColor définit une module nommé "Terme". Le concombre inclut term-ansicolor avant d'inclure les modèles Rails, ainsi "Term" est déjà défini comme un module lors du chargement du modèle "Term". Les modules et classes de niveau supérieur ne peuvent pas avoir les mêmes noms dans Ruby, donc la collision. Préférant ne pas renommer le modèle, j'ai commencé à patcher la gemme term-ansicolor. Cela s'est avéré plus dur que je ne le pensais. J'ai changé le nom du module de terme en "ANSITerm", mais je ne peux pas comprendre comment obtenir le concombre pour charger mon gem modifié, que j'ai mis dans RAILS_ROOT/vendor/gems/term-ansicolor.
Des idées? Est-ce que j'aboie le mauvais arbre?
Je viens de croiser ce * * exact problème, j'ai un modèle nommé terme aussi bien et le concombre vient d'être installé. C'est une bonne chose que j'ai cherché cette erreur avant de passer des heures à essayer de comprendre ce qui se passait! Merci beaucoup de poster ceci, je suivrai votre solution! – carols10cents
Je suis content que ce fut utile. Gardez à l'esprit que vous devez maintenir vos gemmes corrigées à l'avenir, donc renommer le modèle pourrait être plus facile. – zetetic
J'ai effectivement commenté ce bug de concombre ici: https://rspec.lighthouseapp.com/projects/16211-cucumber/tickets/489 et je travaille pour obtenir votre terme-ansicolor patché de github intégré avec un concombre patché de sorte que nous ne devons pas maintenir la gemme patchée; mais oui, j'ai renommé mon modèle en attendant. – carols10cents