Чтобы загрузить время, вы можете сделать что-то вроде этого в вашем действии:
def download
start_time = Time.now
file_size = File.size('never_gonna_give_you_up.mp3') / 1024.0 / 1024.0
send_file("never_gonna_give_you_up.mp3")
logger.info("Download took #{Time.now - start_time}s at #{file_size / (Time.now - start_time)} MB/s")
end
Для определения времени загрузки пользователя вы не сможете проверить, сколько времени потребовалось пользователю, чтобы загрузить что-либо строго в Ruby или Rails, поскольку запрос не обрабатывается до тех пор, пока пользователь не завершит загрузку. Что вы могли бы сделать - это заполнить поле javascript (например, upload_start_time) при отправке формы, а затем вычесть время в начале действия, например:
def upload
upload_time = Time.parse(params[:upload_start_time]) - Time.now
file_size = params[:file].size / 1024.0 / 1024.0 # assuming 'file' is the name of the field
logger.info("Upload took #{upload_time} at #{file_size / upload_time} MB/s")
end
Это не будет точным, но должно дать вам хорошее приближение.