これまでの話:
「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で同じ名前を持つことはできないため、衝突が発生します。
モデルの名前を変更しないことを好み、用語-ansicolorgemにパッチを適用することにしました。これは私が思っていたよりも難しいことがわかりました。Termモジュール名を「ANSITerm」に変更しましたが、RAILS_ROOT / vendor / gems/term-ansicolorに入れた変更したgemをCucumberにロードさせる方法がわかりません。
何か案は?私は間違った木を吠えていますか?