Любой rubygem, чтобы войти / stdout удаленных вызовов API webservice с помощью драгоценных камней, таких как httparty, faraday, httpclient и т. Д.? - PullRequest
1 голос
/ 17 июля 2011

При использовании драгоценных камней, таких как httparty / faraday / etc .., которые выполняют удаленные вызовы API, существует ли какой-либо драгоценный камень, который может перехватить запрос, особенно параметры запроса для входа или отображения в stdout?

Ответы [ 3 ]

2 голосов
/ 17 июля 2011

Я действительно мог бы использовать что-то подобное, поэтому я прибегнул к переопределению класса 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/

Если более интересная версия этого представляет интерес (настраиваемый регистратор, подробности журнала, что угодно), я мог бы броситьэто в жемчужину, если ничего не существует (что я не могу себе представить :).Но для простых целей отладки этого должно быть достаточно.

Кстати, я проверял это только с ruby ​​1.9.2

EDIT

Я немного расширил этои упаковал его как драгоценный камень.Проверьте это в https://github.com/trusche/httplog. Записывает в любой экземпляр ruby ​​Logger.Работает для меня с ruby ​​1.9.2 из консоли ruby ​​и из приложения Rails 3.1 и имеет множество прохождений тестов rspec.Надеюсь, это поможет.

0 голосов
/ 17 июля 2011

Httparty имеет debug_mode, который позволяет вам передавать данные отладки в файл или стандартный вывод.

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

Другой способ - использовать прокси, который туннелирует и регистрирует запросы.

0 голосов
/ 17 июля 2011

Мне не удалось найти ни такой драгоценный камень, ни простой способ включить такую ​​функциональность (по крайней мере, в Фарадей).

Задумывались ли вы об использовании стандартного монитора TCP, например http://ws.apache.org/commons/tcpmon?. Он позволяет вам подключаться через него, поэтому вместо подключения к удаленному серверу вы подключаетесь к монитору tcp (на произвольном порту), очередь подключается к удаленному серверу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...