如何获取RestClient执行一个方法所花费的时间?

时间:2014-12-12 10:10:18

标签: ruby-on-rails ruby ruby-on-rails-3 rest-client

我正在使用RestClient gem来执行API请求。 我想知道执行该请求需要多长时间。

responseObject = RestClient.post request_url,params[:request_body],:content_type => params[:content_type]
responseObject.code

现在我怎样才能获得执行时间。

2 个答案:

答案 0 :(得分:2)

为此目的使用benchmark

require "benchmark"

time = Benchmark.measure do
  responseObject = RestClient.post request_url,params[:request_body],:content_type => params[:content_type]     
end

其他原始方式:

beginning_time = Time.now
responseObject = RestClient.post request_url,params[:request_body],:content_type => params[:content_type]
end_time = Time.now
puts "Time elapsed #{(end_time - beginning_time)*1000} milliseconds"

答案 1 :(得分:2)

alias_method_chain在这里很有用。

由于RestClient使用名为Request的类来执行所有api请求(请参阅源代码here),因此您可以在初始化程序中将此代码段添加到rails项目中。只需在您的环境配置中添加config.debug_rest_client_duration = true即可。

class RestClient::Request

  class << self
    def execute_with_log_duration(args, &block)
      started = Time.now
      res = execute_without_log_duration(args, &block)
      Rails.logger.info "api call duration is: " + (Time.now - started).to_s + " seconds"
      return res
    end
    alias_method_chain :execute, :log_duration if Rails.application.config.debug_rest_client_duration
  end

end