迄今爲止的故事:如何解決Rails的模型命名空間衝突
我有一個名爲「期限」模型中的Rails應用程序。一切都很好,直到試圖安裝黃瓜。在運行
rake cucumber
我得到
Term is not a class (TypeError)
這是因爲黃瓜包括另一顆寶石,「長期-ansicolor」(做在控制檯中漂亮的彩色文本輸出),以及長期-ansicolor定義名爲「Term」的模塊。在包含Rails模型之前,Cucumber包含term-ansicolor,因此在加載「Term」模型時,「Term」已被定義爲模塊。頂級模塊和類不能在Ruby中具有相同的名稱,因此碰撞。
不喜歡重命名模型,我設置了修補term-ansicolor gem。這比我想象的要難得多。我將術語模塊名稱改爲「ANSITerm」,但我無法弄清楚如何讓Cucumber加載我修改過的gem,我已將它放入RAILS_ROOT/vendor/gems/term-ansicolor。
任何想法?我吠叫錯了樹嗎?
我只是碰到了這個確切* *的問題,我也一樣的模型命名期限和剛剛安裝黃瓜。在花費數小時試圖弄清楚發生了什麼事之前,我搜索了這個錯誤是件好事!非常感謝您發佈此信息,我將會遵循您的解決方案! – carols10cents 2010-01-21 21:24:33
我很高興這是有幫助的。請記住,你必須保持你的補丁寶石前進,所以重命名模型可能會更容易。 – zetetic 2010-01-22 16:34:52
我實際上在這裏評論了這個黃瓜缺陷:https://rspec.lighthouseapp.com/projects/16211-cucumber/tickets/489,我正在從github獲得補丁項 - ansicolor,並與修補過的黃瓜所以我們不必保持修補的寶石;但是,是的,我在此期間重新命名了我的模型。 – carols10cents 2010-02-01 14:53:50