开发者

Is it possible to namespace methods added to existing classes in Ruby?

I'm writing some code in which I'd like to add some methods to a predefined class, like so:

class Model  # this class already exists

  def my_method
    # code here
  end

end

Is there any way to namespace this, using Modules or 开发者_运维知识库otherwise?


There will be a mechanism to do this in Ruby 2.0, although it is not exactly clear what exactly that mechanism is going to be. For the past almost 10 years, the frontrunner seemed to be Selector Namespaces, but recently Classboxes and even more recently, Refinements have taken the lead. In fact, if I am not mistaken, Refinements are actually currently implemented in the YARV trunk.

With all currently existing versions (including the soon to be released 1.9.3), however, there is no way to do this.

That's one of the reasons why monkey patching should generally be avoided.


Just write your methods inside a Module and include it in Model:

module SomeModule
  def my_method
  end
end

class Model
  include SomeModule
end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜