module ActiveStorage::Streaming
def send_blob_stream(blob, disposition: nil) # :doc:
The content type and filename is set directly from the +blob+.
Stream the blob from storage directly to the response. The disposition can be controlled by setting +disposition+.
def send_blob_stream(blob, disposition: nil) # :doc: send_stream( filename: blob.filename.sanitized, disposition: blob.forced_disposition_for_serving || disposition || DEFAULT_BLOB_STREAMING_DISPOSITION, type: blob.content_type_for_serving) do |stream| blob.download do |chunk| stream.write chunk end rescue ActiveStorage::FileNotFoundError expires_now head :not_found rescue # Status and caching headers are already set, but not commited. # Change the status to 500 manually. expires_now head :internal_server_error raise end end