2012-09-25 73 views
0

我在我的控制器中有一個下載動作,當用戶點擊下載鏈接時會記錄下來。有什麼方法可以追蹤下載完成或至少成功完成所需的時間?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

在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 %> 
+0

這非常棒!不知道這是否存在。謝謝。關於控制器基準測試的一個注意事項:'基準'下載時間'do | send_file |'工作... – prodigerati