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.
ThreadSpawn
ThreadPool
WriterThreadPool
WriterThreadSpawn
EventMachine
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' }, [] ] }
Parent: Struct.new(:app)
Pages
Classes
Methods
mail archives: https://yhbt.net/rainbows-public/ http://ou63pmih66umazou.onion/rainbows-public/ nntp://news.public-inbox.org/inbox.comp.lang.ruby.rainbows nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.rainbows nntp://news.gmane.io/gmane.comp.lang.ruby.rainbows.general public: rainbows-public@yhbt.net source code: git clone https://yhbt.net/rainbows.git torsocks git clone http://ou63pmih66umazou.onion/rainbows.git