Then we need a lighty adapter that inherits from the FCGI one.

-- Yehuda

On Sun, Aug 30, 2009 at 1:27 PM, Magnus Holm <judofyr@gmail.com> wrote:
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.

-- Yehuda


On Sat, Aug 29, 2009 at 3:17 AM, Martin Boese <boesemar@googlemail.com> wrote:

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

Thanks, yes that sounds related.

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





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