From: Kirk Haines Date: 2002-10-29T03:38:15+09:00 Subject: Re: IOWA, state saving and URL complexity [was: Help wanted with an experimental FAQ facility] > On a side note, I've been wondering how easy it is to catch extra URL > information (either path or CGI parameters) and setting up state based > on it. I'd like to be able to send people to somewhat specified URLs > and bypassing the Main.html. I.e. giving them something like > /iowa/myapp/username/ or /iowa/myapp?username=username > I'm sure its pretty straightforward to hack it into IOWA, but I was > hoping someone had a cleaner, neater approach. This sounds like it > might make the Ruby FAQ URLs prettier too, atleast as an access point. Two things: On the version of Iowa that I use for my production work, and that I'm (_still_, ugh) trying to get all committed to the CVS tree for Iowa so that I can do a new release, I have added the ability to easily access the CGI parameters from within an Iowa app so that they can be used to influence behavior. This lets me do things like this: params = session.context.request if (params['id'].to_s != '') #take one course of action else #take another course of action end One place that I use this is in a small application that displays, if it does not receive an id= in the cgi parameters, a list of news/current event items, and if it does receive that id= parameter, the specific news item that id refers to. Along the lines of what you are asking for is something else that I am working on. I have a lot of things that I use Iowa for that are less than an "Application". They are a standalone page with some dynamic content in them. For example, a mutual fund company has a set of pages that list various pieces of performance data about their funds. It was really trivial to use Iowa to make an "Application" to show the page with the relevant data queried from the database. However, it's really overkill to have a bunch of seperate "application" running on the server for each of these pages, just so each can be referenced directly by a seperate URL. So, what I am developing is a system that lets me establish a mapping of URL to Iowa component. Request the URL, and the page rendered by the mapped component is what actually gets displayed. That way one can easily put together a Foo.html or a Foo.iwa/Foo.html pair, and map a URL to it so that when the URL is hit, the page defined in Foo.html is what is actually displayed. That way it'll be really easy to put together things like sets of related pages that all display information about mutual funds, but are accessed with different URLs or have some other slight variations, without having to have a bunch of completely seperate Iowa applciation daemons running for each. The code is not ready for even a prerelease, yet, but I'd be interested in hearing any thoughts people may have about this. Thanks, Kirk Haines