168: def call(env)
169: reload!
170: apps = @reloader.apps
171:
172: case apps.length
173: when 0
174: index_page(apps)
175: when 1
176: apps.values.first.call(env)
177: else
178: apps.each do |name, app|
179: mount = name.to_s.downcase
180: case env["PATH_INFO"]
181: when %r{^/#{mount}}
182: env["SCRIPT_NAME"] = env["SCRIPT_NAME"] + $&
183: env["PATH_INFO"] = $'
184: return app.call(env)
185: when %r{^/code/#{mount}}
186: return [200, {'Content-Type' => 'text/plain', 'X-Sendfile' => @reloader.script(app).file}, []]
187: end
188: end
189:
190: index_page(apps)
191: end
192: end