zet*_*tic 9 ruby namespaces ruby-on-rails cucumber collision
到目前为止的故事:
我有一个名为"Term"的模型的rails应用程序.一切都很顺利,直到尝试安装Cucumber.跑步时
rake cucumber
Run Code Online (Sandbox Code Playgroud)
我明白了
Term is not a class (TypeError)
Run Code Online (Sandbox Code Playgroud)
这是因为Cucumber包含另一个gem,'term-ansicolor'(在控制台中执行漂亮的彩色文本输出),term-ansicolor定义了一个名为"Term"的模块.在包含Rails模型之前,Cucumber包括term-ansicolor,因此在加载"Term"模型时,"Term"已被定义为模块.顶级模块和类在Ruby中不能具有相同的名称,因此发生冲突.
我不想重命名模型,而是开始修补term-ansicolor gem.事实证明这比我想象的更难.我将Term模块名称更改为"ANSITerm",但我无法弄清楚如何让Cucumber加载我修改过的gem,我已将其放入RAILS_ROOT/vendor/gems/term-ansicolor.
有任何想法吗?我吠叫错了树吗?
| 归档时间: |
|
| 查看次数: |
4211 次 |
| 最近记录: |