Active Resource在何处以及如何执行其HTTP请求?

时间:2011-11-08 00:35:52

标签: ruby-on-rails ruby activeresource

我找不到Active Resource启动其连接的位置。我期待Connection.request调用网络库,但它只是调用ActiveSupport :: Notifications.instrument,它似乎是某种消息传递服务。

有人知道这是怎么回事吗?我找不到正在侦听该消息的代码。 ActiveSupport :: Notifications对我来说是全新的,所以也许听众会有一个明显的位置。

  def request(method, path, *arguments)
    result = ActiveSupport::Notifications.instrument("request.active_resource") do |payload|
      payload[:method]      = method
      payload[:request_uri] = "#{site.scheme}://#{site.host}:#{site.port}#{path}"
      payload[:result]      = http.send(method, path, *arguments)
    end

GitHub上的方法定义为here

1 个答案:

答案 0 :(得分:1)

我认为答案取决于分配到http.send()的{​​{1}}来电。

从文件中的进一步:

payload[:result]

# Creates new Net::HTTP instance for communication with the # remote service and resources. def http configure_http(new_http) end def new_http if @proxy Net::HTTP.new(@site.host, @site.port, @proxy.host, @proxy.port, @proxy.user, @proxy.password) else Net::HTTP.new(@site.host, @site.port) end end def configure_http(http) http = apply_ssl_options(http) # Net::HTTP timeouts default to 60 seconds. if @timeout http.open_timeout = @timeout http.read_timeout = @timeout end http end 来自第4行的Net::HTTP