class_eval とオープンクラス
概要
私は Spree を使用しています。Spree には次のような Order というクラスがあります。
module Spree
class Order
# class definition.
end
end
私自身のアプリでは、次のように Order をカスタマイズしています。
Spree::Order.class_eval do
# customisations
end
私の質問は、単にこれを行うだけでよいでしょうか:
module Spree
class Order
# My own customisations.
end
end
これには何か欠点はありますか?基本的に、class_eval の使用は避けたいと考えています。
解決策
ベンジャミン、既存のクラスが存在しないかロードされていない場合、クラスを再度開いても通知しません (ただし、class_eval はエラーを発生させます)。
でも、テスト範囲があれば、クラスを再開しても安全なはずですよね?
詳細な説明については、https://stackoverflow.com/a/900508/474597 を参照してください。