覆盖Ruby中的第三方方法

时间:2013-12-10 15:11:18

标签: ruby methods override rest-client

我正在使用纯ruby和RestClient开发一些工具,我想覆盖Request类的默认log_request方法。

LIB / RESTClient实现/ request.rb

module RestClient
  class Request
    def log_request
      RestClient.log << "SECRET"
    end
  end
end

但是现在,如果我尝试测试它,它就不起作用了:

$ irb
irb(main):001:0> require 'restclient'
=> true
irb(main):002:0> RestClient.log = "stdout"
=> "stdout"
irb(main):003:0> RestClient.get("http://localhost")
RestClient.get "http://localhost", "Accept"=>"*/*; q=0.5, application/xml", "Accept-Encoding"=>"gzip, deflate"

预计只会看到SECRET作为输出。

我可能错过了,如何在默认的RestClient库中“注入”我的代码?

如何从lib / mytool / somefile.rb中的另一个文件执行此操作?

2 个答案:

答案 0 :(得分:0)

由于您将它放在lib文件夹中,因此不会加载此文件,因为已定义了RestClient :: Request常量。将此代码放在config / initializers文件夹中

答案 1 :(得分:0)

require 'restclient'之后需要完全要求此文件 添加load 'lib/restclient/request.rb'可以解决问题