私の Rails 2.3 アプリでは、既存の ActiveRecord モデルと最近追加した gem との間の名前空間の衝突が問題の原因であることがわかりました。
jammit
具体的には、アプリにサポートを追加しようとしていました。jammit に依存する gem の 1 つである requireは、アプリの名前空間にモジュール'platform'
を導入します。しかし、私はすでにその名前の ARクラスを持っており、その名前を変更すると、多くの追加作業が発生し、バグが発生する可能性があります。Platform
クラスの名前を変更したり、実際のgemを変更したりせずに、この名前空間の衝突を防ぐ比較的簡単な方法(ルビーのメタマジックなどを使用)があるかどうか疑問に思っていました。ありがとう。
編集:
アプリ全体でクラス の名前を変更/ラップする代わりに、モジュールは他の 1 つの gem でのみ必要とされるため、両方の gem をフォークし、(元の gem とそれをインポートするものの両方で)名前を変更し、両方を再構築することになりました。 . それはうまくいったようです [ため息]。Platform
Platform
Platform
XPlatform