1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| | # must be run without Rack::Lint since that clobbers to_path
class Wrapper < Struct.new(:app)
def call(env)
status, headers, body = app.call(env)
body = Body.new(body) if body.respond_to?(:to_path)
[ status, headers, body ]
end
class Body < Struct.new(:body)
def to_path
body.to_path
end
def each(&block)
body.each(&block)
end
def close
::File.open(ENV['fifo'], 'wb') { |fp| fp.puts "CLOSING" }
end
end
end
use Wrapper
run Rack::File.new(Dir.pwd)
|