到目前为止的故事:
我有一个名为“Term”的模型的 Rails 应用程序。一切都很好,直到尝试安装 Cucumber。运行时
rake cucumber
我明白了
Term is not a class (TypeError)
这是因为 Cucumber 包含另一个 gem,“term-ansicolor”(在控制台中输出漂亮的彩色文本),并且 term-ansicolor 定义了一个名为“Term”的模块。Cucumber 在包含 Rails 模型之前包含 term-ansicolor,因此在加载“Term”模型时“Term”已经定义为模块。顶级模块和类在 Ruby 中不能有相同的名称,因此会发生冲突。
不想重命名模型,我着手修补术语 ansicolor gem。事实证明这比我想象的要难。我将 Term 模块名称更改为“ANSITerm”,但我不知道如何让 Cucumber 加载我已将其放入 RAILS_ROOT/vendor/gems/term-ansicolor 的修改后的 gem。
有任何想法吗?我在吠叫错误的树吗?