1. It doesn't work well when you try to mount it on a sub-directory
2. SCRIPT_NAME should be empty when it's mounted on root (even though
Camping can handle it).
3. REQUEST_URI contains query string too. What about
env['REQUEST_URI'].gsub(/\?.*/,'')?

It's not really a portable solution, so I don't think we should
publish this all over the internet, but it's good to hear that it's
working for you :-)

--

It seems that (almost) everything I said earlier was wrong: Now
PATH_INFO is suddenly / (I could have swear that it was gone!) And the
reason I got REDIRECT_SCRIPT_NAME was because I had a "SetEnv
SCRIPT_NAME /sub" in my .htaceess...

It also looks like it's impossible to auto magically detect what the
proper SCRIPT_NAME should be. I guess the "hack" should be put into
dispatch.cgi. What about this? http://pastie.org/236889

On Thu, Jul 17, 2008 at 2:08 AM, Eric Mill <[EMAIL PROTECTED]> wrote:
> OK, I am good to go, working CGI and FastCGI .htaccess and dispatch.*
> files written.  I changed REDIRECT_URI to REQUEST_URI.
>
> For CGI:
> * dispatch.cgi: http://pastie.org/235313
> * .htaccess for CGI: http://pastie.org/235315
>
> For FastCGI, based on the above:
> * in dispatch.cgi, change Rack::Handler::CGI.run to be
> Rack::Handler::FastCGI.run
> * in .htaccess change dispatch.cgi to be dispatch.fcgi
>
> Awesome.  Thanks for everyone's help.  Especially Magnus and Jenna,
> you two rule.
>
> This seems like a good candidate for the github Camping wiki -- do
> people even know that thing exists, is it worth it?  Or should I just
> add it to the Camping wiki on why's site?
>
> -- Eric
>
> On Wed, Jul 16, 2008 at 6:13 PM, Eric Mill <[EMAIL PROTECTED]> wrote:
>> The 500-handling I'm used to appears to be gone.  What's the best approach 
>> here?
>>
>> -- Eric
>>
>> On Wed, Jul 16, 2008 at 6:08 PM, Eric Mill <[EMAIL PROTECTED]> wrote:
>>> I think I've got it working, with this as the 'fixer' call:
>>>
>>>  def call(env)
>>>    env['SCRIPT_NAME'] = '/'
>>>    env['PATH_INFO'] = env['REDIRECT_URL']
>>>    @app.call(env)
>>>  end
>>>
>>> I think you might have meant REDIRECT_URL and not REDIRECT_SCRIPT_NAME?
>>>
>>> Thank you Magnus!
>>>
>>> -- Eric
>>>
>>> On Wed, Jul 16, 2008 at 5:51 PM, Eric Mill <[EMAIL PROTECTED]> wrote:
>>>> Also worth noting is that PATH_INFO isn't emptied - it's set to "/" or
>>>> "/login", the correct request path.
>>>>
>>>> -- Eric
>>>>
>>>> On Wed, Jul 16, 2008 at 5:40 PM, Eric Mill <[EMAIL PROTECTED]> wrote:
>>>>> Unfortunately this isn't working.  I'm checking my ENV and
>>>>> REDIRECT_SCRIPT_NAME isn't set to anything.  I'm using the Rack spec
>>>>> to try to figure out an alternative.
>>>>>
>>>>> Right now, requests to "/" go to a Camping error page which says
>>>>> "/index.html not found!"  and requests to "/login" (which should go to
>>>>> a different controller) says "/login.html not found!".  PATH_INFO has
>>>>> been set to "/login.html" in this case.
>>>>>
>>>>> I also tried setting SCRIPT_NAME to be whatever REQUEST_URI is, but
>>>>> this has the same effect as using the REDIRECT_SCRIPT_NAME approach.
>>>>>
>>>>> Continuing to investigate,
>>>>> Eric
>>>>>
>>>>> On Wed, Jul 16, 2008 at 5:31 PM, Magnus Holm <[EMAIL PROTECTED]> wrote:
>>>>>> Simply replace Testing with TestingFixed in dispatch.cgi:11 and
>>>>>> dispatch.fcgi:13 to see the diffenrence :-)
>>>>>>
>>>>>> On Wed, Jul 16, 2008 at 11:28 PM, Eric Mill <[EMAIL PROTECTED]> wrote:
>>>>>>> Magnus, this is terrific information, thank you for looking into this.
>>>>>>>
>>>>>>> I'm trying to follow your example - you use ApacheFixer to make a
>>>>>>> "TestingFixed" class, but never use that class anywhere else.  Do you
>>>>>>> mean for the lines in dispatch.* to use "TestingFixed" instead of
>>>>>>> "Testing"?
>>>>>>>
>>>>>>> I'm trying to use this to resolve my problems as we speak,
>>>>>>> Eric
>>>>>>>
>>>>>>> On Wed, Jul 16, 2008 at 5:08 PM, Magnus Holm <[EMAIL PROTECTED]> wrote:
>>>>>>>> This "bug" is actually Apache's fault. The problem occurs when you use
>>>>>>>> mod_rewrite to hide that you're using dispatch.cgi. When you use
>>>>>>>> "RewriteRule ^(.*)$ dispatch.cgi" the following happens:
>>>>>>>>
>>>>>>>> * SCRIPT_NAME is set to /dispatch.cgi (since that's the actual script
>>>>>>>> which gets ran)
>>>>>>>> * REDIRECT_SCRIPT_NAME is set to whatever SCRIPT_NAME was before
>>>>>>>> * PATH_INFO is emptied
>>>>>>>>
>>>>>>>> I've also tested this on 1.5 and it has the same problem. However, if
>>>>>>>> you use server/fastcgi.rb (not Rack as I've been testing with) you can
>>>>>>>> set the ENV['FORCE_ROOT'] to 1 and it will re-set SCRIPT_NAME and
>>>>>>>> PATH_INFO using REQUEST_URI, which will (partly) solve the problem.
>>>>>>>>
>>>>>>>> Right now, we have no FORCE_ROOT in Rack, but here's a simple fix:
>>>>>>>>
>>>>>>>> * Change .htaccess to "RewriteRule ^(.*)$ dispatch.cgi/$1" (You might
>>>>>>>> need to drop to slash).
>>>>>>>> * Add a middleware which sets SCRIPT_NAME to REDIRECT_SCRIPT_NAME
>>>>>>>> (http://pastie.org/235062)
>>>>>>>>
>>>>>>>> This isn't really our problem, but rather Apache (which should be able
>>>>>>>> to alias CGI-scripts with the correct headers). It probably won't
>>>>>>>> happen, so I guess we have to add some nasty hacks into Rack.
>>>>>>>>
>>>>>>>> I haven't tried this on any other servers (LightTPD/Nginx), but as
>>>>>>>> long as there is no URL-rewriting (I know LightTPD can do it with
>>>>>>>> FastCGI) it's probably no problem (maybe not even with, if it's smart
>>>>>>>> enough).
>>>>>>>>
>>>>>>>> Here is a simple app which shows @env (and works on both 1.5 and 2.0):
>>>>>>>> http://pastie.org/235078. It would be great if you could test it on
>>>>>>>> different setups and see which requires special treatment. Check out
>>>>>>>> the Rack-spec for how the variables should be set:
>>>>>>>> http://rack.rubyforge.org/doc/files/SPEC.html
>>>>>>>>
>>>>>>>> On Wed, Jul 16, 2008 at 5:07 PM, Eric Mill <[EMAIL PROTECTED]> wrote:
>>>>>>>>>
>>>>>>>>> Bluebie -- I tried doing this with FastCGI with the same settings
>>>>>>>>> (changed .htaccess to point to dispatch.fcgi, changed dispatch file to
>>>>>>>>> use Rack::Handler::FastCGI.run, got the exact same results.  FastCGI
>>>>>>>>> will also suffer from these bugs.
>>>>>>>>>
>>>>>>>>> -- Eric
>>>>>>>>>
>>>>>>>>> On Mon, Jul 14, 2008 at 7:40 PM, Bluebie, Jenna
>>>>>>>>> <[EMAIL PROTECTED]> wrote:
>>>>>>>>> > We are talking about cgi here, not fast cgi. Specifically CGI's 
>>>>>>>>> > interactions
>>>>>>>>> > with mod_rewrite in apache.
>>>>>>>>> > _______________________________________________
>>>>>>>>> > Camping-list mailing list
>>>>>>>>> > Camping-list@rubyforge.org
>>>>>>>>> > http://rubyforge.org/mailman/listinfo/camping-list
>>>>>>>>> >
>>>>>>>>> _______________________________________________
>>>>>>>>> Camping-list mailing list
>>>>>>>>> Camping-list@rubyforge.org
>>>>>>>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Magnus Holm
>>>>>>>> _______________________________________________
>>>>>>>> Camping-list mailing list
>>>>>>>> Camping-list@rubyforge.org
>>>>>>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Camping-list mailing list
>>>>>>> Camping-list@rubyforge.org
>>>>>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Magnus Holm
>>>>>> _______________________________________________
>>>>>> Camping-list mailing list
>>>>>> Camping-list@rubyforge.org
>>>>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>>>>
>>>>>
>>>>
>>>
>>
> _______________________________________________
> Camping-list mailing list
> Camping-list@rubyforge.org
> http://rubyforge.org/mailman/listinfo/camping-list
>



-- 
Magnus Holm
_______________________________________________
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Reply via email to