我找不到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
答案 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
。