我的控制器中有一个下载操作,当用户点击下载链接时会记录该操作。有没有办法跟踪下载完成所需的时间,或者至少是成功的?
以下是控制器中的下载操作(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
也许这是不可能的,但我想我会问是否有人有任何想法......
谢谢!
答案 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 %>