World: r3wp
[!Cheyenne] Discussions about the Cheyenne Web Server
older newer | first last |
Chris 23-Apr-2007 [388] | For example, from this url: http://foo.com/pages/edit/1-- I get the Request_Uri value "/pages/edit/1" then parse it -- ["pages" "edit" "1"] -- here I have a controller, and action and an id. It is a more enduring approach than http://foo.com/cgi-bin/qm.r?controller=pages&action=edit&id=1 |
Pekr 23-Apr-2007 [389] | why do you regard it being a difference? |
Chris 23-Apr-2007 [390] | This is veering OT, so I'll point you here: http://www.w3.org/Provider/Style/URI http://www.alistapart.com/articles/succeed/ http://www.alistapart.com/articles/urls/ We can discuss further in 'Web' |
Dockimbel 23-Apr-2007 [391x4] | RE: get-env "REQUEST_URI" : using the CGI or the RSP handler ? |
The Rewriting engine for Cheyenne has not been implemented yet. I know that Will developed a simple one for Cheyenne/RSP based on PARSE rules. | |
Re: REQUEST_URI, in CGI mode => all request parameters are in system/options/cgi | |
Re: REQUEST_URI, in RSP mode => all request parameters are in request/in (deprecated in the upcoming version) | |
Chris 23-Apr-2007 [395] | Looking for it in the CGI handler. Request_URI isn't in the system/options/cgi block -- even using Apache, I have to do get-env "REQUEST_URI" |
Dockimbel 23-Apr-2007 [396x2] | You should be able to obtain an equivalent to REQUEST_URI by join several values from system/options/cgi. |
join => joining | |
Chris 23-Apr-2007 [398x3] | Except without being able to rewrite, the request_uri will always be the same... |
If I type http://localhost/pages/this-- I need to run /cgi/qm.r and have access to '/pages/this' | |
I haven't delved deep enough to understand if this'd be better written as a Cheyenne handler, though that would require forking the cgi script, which for the time being, also has to run under Apache. | |
Dockimbel 23-Apr-2007 [401x2] | I see the problem. |
If I give you a customized Cheyenne handler for QM that can check URLs (with parse rules) and send them to /cgi/qm.r before checking the local filesystem, would it suit your needs ? | |
Graham 23-Apr-2007 [403x4] | Sounds good. |
Isn't this how Zope works? | |
The whole Zope website is just a huge Python object, and when you access a path, the Zope webserver executes the object referred to ... | |
But you can remap paths on the fly | |
Dockimbel 23-Apr-2007 [407] | Don't know how Zope handles rewriting, but the solution I've proposed to Chris is quite specific (even if it could be parameterized). The solution I had in mind for a Rewriting engine would be much more generic. |
Graham 23-Apr-2007 [408] | A few of us are experiementing with Chris' project .. so something that just sends everything to qm.cgi or qm.r would be helpful. |
Dockimbel 23-Apr-2007 [409] | The Mod-MapURL that I'll provide in the next release will act like that, mapping URLS to REBOL objects (with nesting supported). |
Graham 23-Apr-2007 [410] | so, the application could just be a large object? Or the objects are on disk? |
Dockimbel 23-Apr-2007 [411] | in-memory objects |
Graham 23-Apr-2007 [412x2] | Ok. |
From memory Zope has a disk based object database ... | |
Dockimbel 23-Apr-2007 [414] | All the application in a large object, if you design it like that, sure. |
Graham 23-Apr-2007 [415] | How's sessions going? :) |
Dockimbel 23-Apr-2007 [416x3] | Yes, I know about ZODB, quite interesting OODB. |
Very well, I'm currently testing the whole RSP framework by building a "test" application : a new web-based bugtracker ;-) | |
It helps me tweak the session system and add some small but useful features. | |
Graham 23-Apr-2007 [419x2] | bootstrapping ? |
Anyway, sounds like progress is being made :) | |
Dockimbel 23-Apr-2007 [421x4] | Yes, I quite happy with the speed and stability of the new implementation, I have RSP pages with 3 SQL queries to a MySQL backend, input and output filters, session handling, tables constructed dynamically with data from DB, all this occuring in a few milliseconds...I still need to test how it scales. |
I => I'm | |
RSP now supports a thin layer for easier DB access. No need to open/close connections, they are persistent and pooled. | |
As soon as the bugtracker is ready, I'll put it online and release a new beta of Cheyenne. | |
Graham 23-Apr-2007 [425] | I think I just opened a connection from start up and kept it open. |
Dockimbel 23-Apr-2007 [426] | The "thin layer" I was talking about doesn't do much more than that, but it's done in a clean and handy way, and once for all. |
Graham 23-Apr-2007 [427] | ok. |
Dockimbel 23-Apr-2007 [428] | I'm finishing a mod-qm for Cheyenne. I'll need to test it and will drop here a download URL. |
Graham 23-Apr-2007 [429] | Nice |
Dockimbel 23-Apr-2007 [430] | hum, problem with [get-env "REQUEST_URI"], I can't set-env ! Is there a simple way to set an environment variable from REBOL ? |
Graham 23-Apr-2007 [431x2] | no |
I think you can set it for the session, but as soon as you reboot .. it's gone. | |
Dockimbel 23-Apr-2007 [433] | If not it can't run under Cheyenne without changing qm.r...but Chris said it has to work with Apache...:-( |
Graham 23-Apr-2007 [434] | kernel32: make object! [ lib: load/library %kernel32.dll win32api-GetEnvironmentVariable: make routine! [ name [string!] buffer [string!] size [ struct! [ size [integer!] ] ] return: [integer!] ] lib "GetEnvironmentVariableA" get-env: func [name [string!] /local size][ buffer: copy "" repeat sp 255 [buffer: append buffer " "] size: make struct! [size [integer!]] reduce [length? buffer] win32api-GetEnvironmentVariable name buffer size trim buffer ] win32api-SetEnvironmentVariable: make routine! [ name [string!] value [string!] return: [integer!] ] lib "SetEnvironmentVariableA" set-env: func [name [string!] value [string!] ][ win32api-SetEnvironmentVariable name value ] ] |
Dockimbel 23-Apr-2007 [435x2] | making a custom module if just not enough, I need a way to set "REQUEST_URI" env variable. |
thanks :-) | |
Graham 23-Apr-2007 [437] | except we are all testing under linux! |
older newer | first last |