Then we need a lighty adapter that inherits from the FCGI one.
IMO, Rack::Handler::FastCGI should strictly follow the FastCGI spec. If the FastCGI doesn't mention it, we shouldn't take care of it.
//Magnus Holm
On Sun, Aug 30, 2009 at 10:45, Martin Boese <boesemar@googlemail.com> wrote:You mean the Rack FastCGI Handler...
if that's the case, this fix works for me:
rack-1.0.0/lib/rack/handler/fastcgi.rb
48c48,55
< env["QUERY_STRING"] ||= ""
---
> if env["PATH_INFO"].to_s.empty? then
> env["PATH_INFO"] = env["REQUEST_URI"].split('?')[0]
> end
>
> if env['QUERY_STRING'].to_s.empty? then
> env['QUERY_STRING'] = env['REQUEST_URI'].scan(/.+?\?(.*)/).to_s
> end
>On Sat, Aug 29, 2009 at 3:06 PM, Yehuda Katz <wycats@gmail.com> wrote:
That is definitely the intention. This should be fixed in the rack lighty adapter.-- YehudaOn Sat, Aug 29, 2009 at 3:17 AM, Martin Boese <boesemar@googlemail.com> wrote:
Thanks, yes that sounds related.
On Fri, Aug 28, 2009 at 11:22 PM, Magnus Holm <judofyr@gmail.com> wrote:
>
> There is another know issue with Lighttpd: http://github.com/rack/rack/blob/master/KNOWN-ISSUES
>
> Maybe they're related?
>
> //Magnus Holm
I was hoping that Rack will give me a standard set of environments no
matter in which technologie the applicaion is deployed at the end.
But I guess that should be fixed in Lighttpd's cgi implementation instead...
Martin
>
>
> On Fri, Aug 28, 2009 at 16:37, 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