Вы, вероятно, ищете бесплатное решение, но если у Вас есть деньги для расходов, , PDFlib является невероятной библиотекой. Это никогда не разочаровывало меня.
Один из вариантов - добавить after_filter в application.rb (чтобы он применялся ко всем действиям) и сделать следующее:
def store_bandwidth_usage
response_size = response.body.size
# Assuming the User model has a bandwidth_usage attribute
@current_user.increment!(:bandwidth_usage, response_size)
end
Конечно, тогда вам понадобится before_filter, который проверяет, что пользователь не превысил выделенную полосу пропускания, иначе ему следует отказать в доступе.
Имейте в виду, что это будет учитываться только для запросов, которые попадают на сервер rails, любые запросы, которые выполняются внешним сервером (например, изображения), не будут включены.