class_eval和open类

Ben*_*Hao 10 ruby spree

我正在使用Spree,Spree有一个叫做Order类似的类:

module Spree
  class Order
    # class definition.
  end
end
Run Code Online (Sandbox Code Playgroud)

在我自己的应用程序中,我一直在自定义Order:

Spree::Order.class_eval do
  # customisations
end
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以简单地这样做:

module Spree
  class Order
    # My own customisations.
  end
end
Run Code Online (Sandbox Code Playgroud)

这有什么缺点吗?基本上,我想避免使用class_eval.

Hui*_*Teo 5

Benjamin,class_eval如果现有类不存在或未加载,则重新打开类不会通知您(但会引发错误)。

但是如果你有测试覆盖率,我猜重新开课应该是安全的?

有关更详细的说明,请参阅/sf/answers/63035591/