Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否有rubygem记录/标准输出HttpParty、faraday、httpclient等gems的远程webservice api调用?_Ruby On Rails_Ruby_Rubygems - Fatal编程技术网

Ruby on rails 是否有rubygem记录/标准输出HttpParty、faraday、httpclient等gems的远程webservice api调用?

Ruby on rails 是否有rubygem记录/标准输出HttpParty、faraday、httpclient等gems的远程webservice api调用?,ruby-on-rails,ruby,rubygems,Ruby On Rails,Ruby,Rubygems,使用诸如httparty/faraday等宝石时。。进行远程api调用时,是否有任何gem可以拦截请求,尤其是要在stdout中记录或显示的请求参数 我还没有找到这样一个宝石,也没有一个简单的方法来打开这样的功能(至少在法拉第) 你想过使用标准的TCP监视器吗?它允许您通过它进行连接,因此您可以连接到tcp监视器(在任意端口上),而不是连接到远程服务器。tcp监视器反过来连接到远程服务器。Httparty有一种调试模式,允许您将调试数据流式传输到文件或标准输出 require "rubygems

使用诸如httparty/faraday等宝石时。。进行远程api调用时,是否有任何gem可以拦截请求,尤其是要在stdout中记录或显示的请求参数

我还没有找到这样一个宝石,也没有一个简单的方法来打开这样的功能(至少在法拉第)


你想过使用标准的TCP监视器吗?它允许您通过它进行连接,因此您可以连接到tcp监视器(在任意端口上),而不是连接到远程服务器。tcp监视器反过来连接到远程服务器。

Httparty有一种调试模式,允许您将调试数据流式传输到文件或标准输出

require "rubygems"
require "httparty"

class Foobar
   include HTTParty

   # If you want to stream to stdout
   #debug_output $stdout

   # Log to a file
   debug_output File.new("httparty.log", "w+")

   get('http://twitter.com/statuses/public_timeline.json')
end

另一种方法是使用代理来隧道和记录请求。

我真的可以使用类似的方法,所以我求助于重写ruby的Net::HTTP类来插入日志记录。到目前为止效果很好,尽管它不是很健壮

module Net

  class HTTP
    alias_method(:orig_request, :request) unless method_defined?(:orig_request)
    alias_method(:orig_connect, :connect) unless method_defined?(:orig_connect)

    def request(req, body = nil, &block)
      Rails.logger.debug("Sending: #{req.method} http://#{@address}:#{@port}#{req.path}")
      Rails.logger.debug("Body: #{req.body}") unless req.body.nil?
      orig_request(req, body, &block)
    end

    def connect
      Rails.logger.debug("Connecting: #{@address}")
      orig_connect
    end
  end

end
这将为您提供如下日志条目:

Connecting: www.flickr.com
Sending: GET http://www.flickr.com:80/photos/thilo/4301203/
如果有兴趣使用更灵活的版本(可配置的日志记录器、日志详细信息等),我可能会将其滚动到一个gem中(如果不存在的话)(我无法想象:)。但是为了简单的调试目的,这应该足够了

顺便说一句,我只是用ruby 1.9.2测试了这个

编辑


我对此进行了一些扩展,并将其打包为一块宝石。请点击查看。记录到任何ruby Logger实例。我在ruby控制台和Rails3.1应用程序中使用ruby 1.9.2,并通过了一系列rspec测试。希望有帮助。

它看起来像我想要的东西。但代码似乎是特定于rails的。仅仅使用ruby和一个示例记录器会是什么?当然,它会成为一个很好的宝石使用!我正在和法拉第一起写这段代码。法拉第是否有任何内置堆栈来实现这一点?请查看ruby Logger类。我会尝试一下,并给出一些反馈。如果我使用的是httparty,这将是最好的。在这个问题中,我只是概括了http库。在这里,我目前使用法拉第这个。