Thanks. That helped On Sunday, November 4, 2012 3:10:16 AM UTC-8, Magnus Holm wrote: > > config.ru only specifies an app + middleware chain, not the server > part. Rack::Builder doesn't run anything; it just builds up an > app-object for you. > > In this case you should write a separate binary: > > app = Rack::Builder.parse_file("config.ru") > Rack::Handler::Hare.run app > > On Sun, Nov 4, 2012 at 6:14 AM, Oscar Del Ben > > wrote: > > > > Hello, > > > > I'm trying to build a rack handler and I've noticed that if I don't > block from server.run then Rack::Builder fails. In my config.ru file I do > the following: > > > > Rack::Handler::Hare.run MyApp.new > > > > but then Rack::Builder fails to parse the file when calling the to_app > method: > > > > def to_app > > app = @map ? generate_map(@run, @map) : @run > > fail "missing run or map statement" unless app > > @use.reverse.inject(app) { |a,e| e[a] } > > end > > > > The problem here is that I never call run explicitly from config.ru, > since I want to use my custom handler, which doesn't block. > > > > I've looked into the thin source code and server.run actually blocks, so > that Rack::Builder#to_app is never called. Is this how the server is > supposed to behave or am I missing something? > > > > Many thanks, > > > > Oscar Del Ben >