跟踪Rails中控制器请求的持续时间?

时间:2012-09-25 18:37:25

标签: logging ruby-on-rails-3.2

我的控制器中有一个下载操作,当用户点击下载链接时会记录该操作。有没有办法跟踪下载完成所需的时间,或者至少是成功的?

以下是控制器中的下载操作(Rails 3.2.8):

def download
    send_file @download.attachment.path, :filename => @download.attachment_file_name,
                                         :content_type => @download.attachment_content_type

    DownloadsLog.debug "log details here! -- at #{Time.now}"
end

downloads_log.rb模型

class DownloadsLog
  def self.debug(message=nil)
    @@downloads_log ||= Logger.new("#{Rails.root}/log/downloads.log", 10, 1024000)
    @@downloads_log.debug(message) unless message.nil?
  end
end

也许这是不可能的,但我想我会问是否有人有任何想法......

谢谢!

1 个答案:

答案 0 :(得分:1)

在Rails 3中,将一段代码包装在一个块中,并将其提供给方法benchmark

benchmark "<My identifying label>" do
  # do this and that...
end

在您的日志中,您会看到一行指示您的块执行的时间:

<My identifying label> (138.8ms)

您甚至可以在视图中使用它:

<% benchmark "Process data files" do %>
  <%= expensive_files_operation %>
<% end %>