Hogan, Brian P.
2005-Nov-11 21:55 UTC
RE: URLs in IIS - Please look at my code and offersuggestions!
Jeremy: as I said on http://dev.rubyonrails.com/ticket/2602 "If I have a "project" controller and a "show" action, why does Rails "link_to" insist on doing "/project/foo" which will go to the root of a webserver? The reason is that Rails is assuming that the app is mounted to the base of a server and it''s easier to do that than to figure out how the relative paths would work." IIS / Apache + SCGI have this need ONLY if the app is run in a subfolder (i.e.. NOT the root of the webserver or vhost). Rails currently (unless you symlink - again, a hack) assumes that you''ll run your app in a vhost configuration. That might work for intranets, but I might want to do this www.uwec.edu/biology/coolapp Instead of coolapp.uwec.edu Currently, /biology/coolapp needs to be prepended to all of the URLs that are generated from Rails, including javascripts. Css files, images, redirect_to, link_to, etc.... Rewrite rules get you TO the site but for some reason it stops working after that.>> I don''t know why IIS and SCGI have this need.Probably because 1. SCGI serves the apps outside of apache so AbsractRequest#relative_url_root returns null in that case, and the same with IIS. But that''s not the heart of the question really... I need to fix this but I need to know if what I''m doing is the *appropriate way* to fix the problem. I''m looking for guidance on whether this is the appropriate method and class to be overriding, and if I''m overriding it in the wrong way (should this be a plugin insteead?) As also suggested on http://dev.rubyonrails.com/ticket/2602 "If you write a plugin or patch that teaches [the request instance] how to get this information from your setup, or just redefines that method to return the prefix you expect, then you should be set. Adding a straight config value for this would not be too hard either... however it might be nice to have a solution that automatically determines the correct prefix. " So that''s what I''m looking for feedback on. I see that my ticket has been reopened, but for my own curiosity, I''d like to know what you and others feel would be the best place to tackle this? (even if it doesn''t get fixed in the rails core, how would *I* best fix it for my setup so I can share it with others?) Thanks for your reply. I appreciate any help. -----Original Message----- From: rails-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org [mailto:rails-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org] On Behalf Of Jeremy Kemper Sent: Friday, November 11, 2005 3:23 PM To: rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org Subject: Re: [Rails] URLs in IIS - Please look at my code and offersuggestions! -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Nov 11, 2005, at 1:13 PM, Hogan, Brian P. wrote:> Bump.... > > Anyone?? Anyone?? Otherwise I''ll just assume that this is appropriate.Brian, I don''t think anyone understands what the problem is. Could you motivate your solution with a discussion of the problem? I don''t know why IIS and SCGI have this need. Best, jeremy> -----Original Message----- > From: rails-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > [mailto:rails-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org] On Behalf Of Hogan, Brian> P. > Sent: Thursday, November 10, 2005 3:33 PM > To: rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > Subject: [Rails] URLs in IIS - Please look at my code and offer > suggestions! > > > Many thanks to Florian Frank for the code snippet for handling URL > writing.... It gave me an idea on how to solve my problem with IIS + > Subfolders / Apache + SCGI + subfolders > > This is my first attempt at trying to override anything in Rails so > please be kind :) > > Pick it apart though... Is this the right way to go about this code- > wise > or is there something else I should be looking at, like maybe > AbstractRequest#relative_url_root() as was suggested on the dev site? > Should this be a plugin rather than doing what I''m doing? > > If you need background information on this, see this posting > > http://dev.rubyonrails.com/ticket/2602 > > Enough boring-ness. Here''s the code (again, borrowed much from > Florian''s > example). I''m simply requiring this file from the production > environment.rb file. Everything "appears" to work as expected but I > want > to see if anyone can see any potential problems. > > vender/vdir_fix.rb > ====================> # configure this for each application... Maybe this should go in # > environment.rb as well? BASE_URL = ''/myvdirname'' > > module ActionController > # Need this so stylesheets / JS files / images can be found > ActionController::Base.asset_host = BASE_URL > > class UrlRewriter > alias old_rewrite_url rewrite_url > > # url writing using the base dir specified above > def rewrite_url(path, options) > > url = old_rewrite_url(path, options) > > # let''s dump the protocol and the host if it''s a local url.... > # This seemed necessary for redirect_to links. > url = url.gsub(@request.protocol + @request.host_with_port, '''') > > #now let''s add the base_url to the url. > url = BASE_URL + url > url # return > end > end > end > > Many thanks in advance to anyone who can help. We''re closer than > ever to > being able to use Rails in our production environment! > > -Brian Hogan > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (Darwin) iD8DBQFDdQu3AQHALep9HFYRAgLGAJ9RgI08MLhY4U+T3SDzvsZmy7BJoQCdHG+I +3gv5OjjdhmmiUE7yhZPlcU=asyg -----END PGP SIGNATURE----- _______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
Zed A. Shaw
2005-Nov-12 02:26 UTC
Re: URLs in IIS - Please look at my code and offersuggestions!
I did this by using the routes.rb config to prefix the base uri for all of the requests. This also fixes quite a few other problems with redirect_to and render as well. Remember, the routes system goes in two directions: * /stuff/dome ---> StuffController.dome redirect_to :controller => "stuff", :action => "dome" ---> /stuff/dome So if you setup your routes to require a prefix then it *should* generate the prefix on the redirect_to call. Zed A. Shaw http://www.zedshaw.com/ On Fri, 11 Nov 2005 15:55:03 -0600 "Hogan, Brian P." <HOGANBP-VnAisaAFmHY@public.gmane.org> wrote:> Jeremy: as I said on > > http://dev.rubyonrails.com/ticket/2602 > > "If I have a "project" controller and a "show" action, why does Rails > "link_to" insist on doing "/project/foo" which will go to the root of > a webserver? The reason is that Rails is assuming that the app is > mounted to the base of a server and it''s easier to do that than to > figure out how the relative paths would work." > > IIS / Apache + SCGI have this need ONLY if the app is run in a > subfolder (i.e.. NOT the root of the webserver or vhost). > > Rails currently (unless you symlink - again, a hack) assumes that > you''ll run your app in a vhost configuration. That might work for > intranets, but I might want to do this > > www.uwec.edu/biology/coolapp >