如何在我的方法中修补模块

时间:2013-03-07 19:27:42

标签: ruby

我需要在EventMachine::Deferrable中包含Faraday::Response,但前提是在reactor循环运行时创建响应。我知道我可以在响应对象而不是类中包含一个模块,但在我的情况下,由于编写上下文代码的方式,我不能这样做。

我有一个循环运行时调用的方法,也许我可以在那里做到?下面的代码不起作用,因为它只是在方法的命名空间中创建一个新类。

def f
  module Faraday
    class Response
      include EventMachine::Deferrable
    end
  end
  ...
end

语言专家的任何建议?

1 个答案:

答案 0 :(得分:0)

到目前为止我是这样做的。有没有更好的方法?

module Faraday
  class Response
    alias :initialize_old :initialize
    def initialize env=nil
      initialize_old env
      extend EventMachine::Deferrable if EventMachine.reactor_running?
    end
  end
end