require 'sinatra' class DatabaseStreamer def initialize(blob) @blob = blob end def each while chunk = @blob.read(4096) yield chunk end end end get '/iterative' do blob = db.go_get_me_some_blob(...) DatabaseStreamer.new(blob) end