These sounds like bugs in the Rack LightHTTP adapter. It looks like LightHTTP is supposed to work: http://rack.rubyforge.org/doc/

-- Yehuda

On Fri, Aug 28, 2009 at 9:37 AM, bones <boesemar@googlemail.com> wrote:

I am porting my application from ruby fcgi to rack which is in
production using the Lighttpd webserver.

I noticed that lighttpd doesn't send PATH_INFO or QUERY_STRING so I
used to patch it by reconstructing it from REQUEST_URI. Now with Rack
I have exactly the same situation. Rack::Request.GET is empty. This
fix on the environment makes it working:

class RackApp

 def fix_env(ec)
      if (ec['PATH_INFO'].to_s.empty?) then
         pi =  ec['REQUEST_URI']
         pi = pi[0..(pi.index('?')-1)] if pi.include?('?')
         ec['PATH_INFO'] = pi
      end

      if (ec['QUERY_STRING'].to_s.empty?) then
         ec['QUERY_STRING'] = ec['REQUEST_URI'].include?('?') ?
             ec['REQUEST_URI'].scan(/.?\?(.*)/)[0][0] :
             ""
      end
      ec
 end

 def call(env)
   Rack::Request.new(fix_env(env))
  # [...]
 end
end


As far as I know Lighttpd and Rails (which used Rack?!) is a popular
combination - so I am quiet surprised that I don't find anything
related on the web. Especially - shouldn't that be implemented into
Rack's CGI/FastCGI Handler?

Cheers,
Martin



--
Yehuda Katz
Developer | Engine Yard
(ph) 718.877.1325