Struct.new(:app)
This middleware handles X-Sendfile headers generated by applications or middlewares down the stack. It should be placed at the top (outermost layer) of the middleware stack to avoid having its to_path method clobbered by another middleware.
This converts X-Sendfile responses to bodies which respond to the to_path method which allows certain concurrency models to serve efficiently using sendfile() or similar. With multithreaded models under Ruby 1.9, IO.copy_stream will be used.
This middleware is the opposite of Rack::Sendfile as it reverses the effect of Rack:::Sendfile. Unlike many Ruby web servers, some configurations of Rainbows! are capable of serving static files efficiently.
NeverBlock (using EventMachine)
DO NOT use this middleware if you’re proxying to Rainbows! with a server that understands X-Sendfile (e.g. Apache, Lighttpd) natively.
This does NOT understand X-Accel-Redirect headers intended for nginx. X-Accel-Redirect requires the application to be highly coupled with the corresponding nginx configuration, and is thus too complicated to be worth supporting.
Example config.ru:
use Rainbows::Sendfile
run lambda { |env|
path = "#{Dir.pwd}/random_blob"
[ 200,
{
'X-Sendfile' => path,
'Content-Type' => 'application/octet-stream'
},
[]
]
}
Originally generated with the Darkfish Rdoc Generator 2, modified by wrongdoc.
We love to hear from you!