--------------ms070108060207050503020303 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit I haven't looked into it much but I too am not very satisfied with amrita for templating. I'd like something more like PHP's Smarty. Haven't had much time to work on ruby web apps lately but when I get back to my on-hold web app I will probably look into other options. Carl Dick Davies wrote: >I've sat down to write a data-driven webapp. Nice steep >learning curve for me (I'm on my last week here so thought >I'd waste it productively). > >So far FastCGI and PostGreSQL (this is an excuse for me >to finally spend time learning SQL in detail, trolls please stfu). > >Few questions at the bottom of this, but it'd help to explain >how I got into this mess first... > >[ Can I also place a hearty plug for Subversion here - I've >changed designs three or four times over the weekend and >renaming files/classes and nesting libs has been a dream >with it. Definitely a refactoring-friendly VCS..] > >The db connection is wrapped in a class, Cnps, which I start up >outside the fcgi mainloop, and is the only thing that is SQL >savvy. The mainloop just calls methods on that class to get data >on demand. > >It all works great - thanks to Carl and Ara for their >rubygarden wiki discussions on fastcgi - but >I'm coming to the stage where I have had enough of > >out "EOO" ><html><body> >#{cnps.champ} is winning with a score of #{cnps.score(cnps.champ)} ></body> ></html> >EOO > > >and want to use some kind of template thing. > >First go was erb. Works well enough, but pretty verbose for >the Wiki Generation :) So plan B was to use redcloth and erb, >to generate eruby from redcloth templates, store them in another >class and eval them when the requests come in. > > >Problem with *that* is that I need placeholders in the Textile >for each thing Eruby can parse , so I end up with a lot of <% %> >noise in the templates. > >(Doing it the other way round seemed hard to do, since I want to >actually evaluate the dynamic tags at request time, but still preload >the templates). > >So, Plan C. Use the ability of RedCloth to create id tags to hook up >to Amrita. > >So now we have > >request comes in, >fcgi decides what to display, >asks a helper class to get the template, >executes the template using Amrita >and returns the output. > >the helper class is responsible for converting the >requested template (textile, (blue|red)cloth, whatever) >to Amrita-ready html. > >Problem here is that Amrita doesn't duck type at all, and >it'd really like a Hash. I was hoping to have Cnps just quack >like a Hash, but it isn't going to happen. Arse. > > >So a few questions: > >Is there a way to delay evaluation of tags? >In a 'do the simplest thing' frame of mind, is there a way to >have ruby "" strings evaluated *after* construction? > >Amrita seems a bit musty, has it got a successor? Does Kwartz >help me any? > >[ This would be my personal preference ] >Is there a facility to extend RedCloth with custom tags? >I could avoid the whole 'do a template from redcloth, then >evaluate template' step that way, and create some kind of unholy >crossbreed of erb/amrita with redcloth? > >Something like '>instance.method<' , then these tags get >processed first and return *more* Textile, which finally >gets converted... I'd need to do the evaluation during >to_html(), but that's kind of neat. > >Obviously I don't expect anyone else to >put up with that, but if I could add my own tag, that'd be >great. I could see it having lots of uses for others too. > > >Am I reinventing a wheel here? > --------------ms070108060207050503020303 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIPxjCC BMgwggQxoAMCAQICBAIAApswDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCVVMxGDAWBgNV BAoTD0dURSBDb3Jwb3JhdGlvbjEcMBoGA1UEAxMTR1RFIEN5YmVyVHJ1c3QgUm9vdDAeFw0w MjA4MjcxOTA3MDBaFw0wNjAyMjMyMzU5MDBaMIHcMQswCQYDVQQGEwJHQjEXMBUGA1UEChMO Q29tb2RvIExpbWl0ZWQxHTAbBgNVBAsTFENvbW9kbyBUcnVzdCBOZXR3b3JrMUYwRAYDVQQL Ez1UZXJtcyBhbmQgQ29uZGl0aW9ucyBvZiB1c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9y ZXBvc2l0b3J5MR8wHQYDVQQLExYoYykyMDAyIENvbW9kbyBMaW1pdGVkMSwwKgYDVQQDEyND b21vZG8gQ2xhc3MgMyBTZWN1cml0eSBTZXJ2aWNlcyBDQTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALEeYGbgQwaeJ2gvApnHiN+F69tl7NRJZ3ouH83cFSzWHqzynUY6XQPA PQUsWhgNWSVCo3LArSjSrTwx4ksH+16Y66gz1mmyWp7qLEmmJi5M8MyrQNKq3ixOgbW6e7hc 0Hu9R/XABtLA5NdH22JAr6EcUQMY27jQu5THPHnqJWSuJhnhPGZHZ5Kde1WrNMJ1btknjp2M 8B3aa5yGBKKQteqdjM/7OUOo8BgtnvcZECycL+HQsf/XWcTNQDL514HbURzyQVKBQbGDuMgJ /pkiR4BPnMuu4CjVHKxwR7Alq6E4Qhdr+mpujV95+PYpAzCkbkbUhV2qQJk4dtseAX3lDKUC AwEAAaOCAacwggGjMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0 LmNvbS9jZ2ktYmluL0NSTC8yMDA2L2NkcC5jcmwwHQYDVR0OBBYEFPZSIhcVEwgDWb8YlZ9I tLnp/vhmMIGSBgNVHSAEgYowgYcwSQYKKoZIhvhjAQIBBTA7MDkGCCsGAQUFBwIBFi1odHRw Oi8vd3d3LnB1YmxpYy10cnVzdC5jb20vQ1BTL09tbmlSb290Lmh0bWwwOgYMKwYBBAGyMQEC AQMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1AwWAYDVR0j BFEwT6FJpEcwRTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEcMBoG A1UEAxMTR1RFIEN5YmVyVHJ1c3QgUm9vdIICAaMwKwYDVR0QBCQwIoAPMjAwMjA4MjcxOTA3 MzFagQ8yMDA1MDIyMzIzNTkwMFowDgYDVR0PAQH/BAQDAgHmMA8GA1UdEwQIMAYBAf8CAQAw DQYJKoZIhvcNAQEFBQADgYEAtqewenGL4LqzgR42MnqGGNbxq005CHEGWmegSwHlMEBtibWe Faqxx/QKxlwO6TfeqJfH3M7Ncft0AgfcXxUnCFMHdtS5BunCd1AeysmwwkaBgACtRKpc1iDZ VTK+Vpbx6r2g47wNgDrqzPuaV+14pTY9VurR53TKNMPPsVHp4AwwggV5MIIEYaADAgECAhEA 0778lNvXcqTJcbJWukDeKDANBgkqhkiG9w0BAQUFADCB3DELMAkGA1UEBhMCR0IxFzAVBgNV BAoTDkNvbW9kbyBMaW1pdGVkMR0wGwYDVQQLExRDb21vZG8gVHJ1c3QgTmV0d29yazFGMEQG A1UECxM9VGVybXMgYW5kIENvbmRpdGlvbnMgb2YgdXNlOiBodHRwOi8vd3d3LmNvbW9kby5u ZXQvcmVwb3NpdG9yeTEfMB0GA1UECxMWKGMpMjAwMiBDb21vZG8gTGltaXRlZDEsMCoGA1UE AxMjQ29tb2RvIENsYXNzIDMgU2VjdXJpdHkgU2VydmljZXMgQ0EwHhcNMDMwNzA2MDAwMDAw WhcNMDQwNzA1MjM1OTU5WjCB3zE1MDMGA1UECxMsQ29tb2RvIFRydXN0IE5ldHdvcmsgLSBQ RVJTT05BIE5PVCBWQUxJREFURUQxRjBEBgNVBAsTPVRlcm1zIGFuZCBDb25kaXRpb25zIG9m IHVzZTogaHR0cDovL3d3dy5jb21vZG8ubmV0L3JlcG9zaXRvcnkxHzAdBgNVBAsTFihjKTIw MDMgQ29tb2RvIExpbWl0ZWQxGDAWBgNVBAMTD0NhcmwgWW91bmdibG9vZDEjMCEGCSqGSIb3 DQEJARYUY2FybEB5b3VuZ2Jsb29kcy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB AKtIZSyfoppNIZm8EwguRgIMPh8Sohgro0UwKanm8DXCPiLWFd25/2WjoCB0VYUMXVEC7D+c tvpruXiLH9lKuD2WNvdHUzr2EdyBP7uJ7Q7C4lMpIjQRtYCOeSH3CeZcy6FyLKZ8jOtV/BgH fWsaX/z8u29bktnr1K18MCNIKq7RAgMBAAGjggGzMIIBrzAfBgNVHSMEGDAWgBT2UiIXFRMI A1m/GJWfSLS56f74ZjAdBgNVHQ4EFgQUrG/w0IpUWEnwYe5gDksKWgjVwqcwDgYDVR0PAQH/ BAQDAgWgMAwGA1UdEwEB/wQCMAAwIAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUC MEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQECAQEBMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2Vj dXJlLmNvbW9kby5uZXQvQ1BTMIGwBgNVHR8EgagwgaUwOKA2oDSGMmh0dHA6Ly9jcmwuY29t b2RvLm5ldC9DbGFzczNTZWN1cml0eVNlcnZpY2VzXzIuY3JsMDqgOKA2hjRodHRwOi8vY3Js LmNvbW9kb2NhLmNvbS9DbGFzczNTZWN1cml0eVNlcnZpY2VzXzIuY3JsMC2gK6ApgSdDbGFz czNTZWN1cml0eVNlcnZpY2VzXzJAY3JsLmNvbW9kby5uZXQwEQYJYIZIAYb4QgEBBAQDAgUg MB8GA1UdEQQYMBaBFGNhcmxAeW91bmdibG9vZHMub3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAR powtW8sldyqXAfqn276jiYMlTBSX6BH1pjnIHNiYECywMi1txd8hRB3c/iHXCyAHuYq3AgRI WegFJ+8/B1jGcUxDjvzmSSjnhFSztT1oNJZUrw0yYhdp+yWDjov24sKFFWYwC4rsnO0y6y9D U9qAyrKk7NuwHp/NPR2tujpnvStgFLk3hvJTUj3Cu//+OXuqPwk6pIDYvnsGkISIkYfO8kQz F39TAlNLkyBIsrzZdTotnSNlkwgzW1Ys62MRjZsC6zlrv2dMPxn0iyrxxtse3d82EF1Y53B/ hWvgGoQfQtnsz9bJSPbl9CvfMqPO/fRxGomUcOCSr7NPdoafve+JMIIFeTCCBGGgAwIBAgIR ANO+/JTb13KkyXGyVrpA3igwDQYJKoZIhvcNAQEFBQAwgdwxCzAJBgNVBAYTAkdCMRcwFQYD VQQKEw5Db21vZG8gTGltaXRlZDEdMBsGA1UECxMUQ29tb2RvIFRydXN0IE5ldHdvcmsxRjBE BgNVBAsTPVRlcm1zIGFuZCBDb25kaXRpb25zIG9mIHVzZTogaHR0cDovL3d3dy5jb21vZG8u bmV0L3JlcG9zaXRvcnkxHzAdBgNVBAsTFihjKTIwMDIgQ29tb2RvIExpbWl0ZWQxLDAqBgNV BAMTI0NvbW9kbyBDbGFzcyAzIFNlY3VyaXR5IFNlcnZpY2VzIENBMB4XDTAzMDcwNjAwMDAw MFoXDTA0MDcwNTIzNTk1OVowgd8xNTAzBgNVBAsTLENvbW9kbyBUcnVzdCBOZXR3b3JrIC0g UEVSU09OQSBOT1QgVkFMSURBVEVEMUYwRAYDVQQLEz1UZXJtcyBhbmQgQ29uZGl0aW9ucyBv ZiB1c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9yZXBvc2l0b3J5MR8wHQYDVQQLExYoYyky MDAzIENvbW9kbyBMaW1pdGVkMRgwFgYDVQQDEw9DYXJsIFlvdW5nYmxvb2QxIzAhBgkqhkiG 9w0BCQEWFGNhcmxAeW91bmdibG9vZHMub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gQCrSGUsn6KaTSGZvBMILkYCDD4fEqIYK6NFMCmp5vA1wj4i1hXduf9lo6AgdFWFDF1RAuw/ nLb6a7l4ix/ZSrg9ljb3R1M69hHcgT+7ie0OwuJTKSI0EbWAjnkh9wnmXMuhciymfIzrVfwY B31rGl/8/LtvW5LZ69StfDAjSCqu0QIDAQABo4IBszCCAa8wHwYDVR0jBBgwFoAU9lIiFxUT CANZvxiVn0i0uen++GYwHQYDVR0OBBYEFKxv8NCKVFhJ8GHuYA5LCloI1cKnMA4GA1UdDwEB /wQEAwIFoDAMBgNVHRMBAf8EAjAAMCAGA1UdJQQZMBcGCCsGAQUFBwMEBgsrBgEEAbIxAQMF AjBGBgNVHSAEPzA9MDsGDCsGAQQBsjEBAgEBATArMCkGCCsGAQUFBwIBFh1odHRwczovL3Nl Y3VyZS5jb21vZG8ubmV0L0NQUzCBsAYDVR0fBIGoMIGlMDigNqA0hjJodHRwOi8vY3JsLmNv bW9kby5uZXQvQ2xhc3MzU2VjdXJpdHlTZXJ2aWNlc18yLmNybDA6oDigNoY0aHR0cDovL2Ny bC5jb21vZG9jYS5jb20vQ2xhc3MzU2VjdXJpdHlTZXJ2aWNlc18yLmNybDAtoCugKYEnQ2xh c3MzU2VjdXJpdHlTZXJ2aWNlc18yQGNybC5jb21vZG8ubmV0MBEGCWCGSAGG+EIBAQQEAwIF IDAfBgNVHREEGDAWgRRjYXJsQHlvdW5nYmxvb2RzLm9yZzANBgkqhkiG9w0BAQUFAAOCAQEA EaaMLVvLJXcqlwH6p9u+o4mDJUwUl+gR9aY5yBzYmBAssDItbcXfIUQd3P4h1wsgB7mKtwIE SFnoBSfvPwdYxnFMQ4785kko54RUs7U9aDSWVK8NMmIXafslg46L9uLChRVmMAuK7JztMusv Q1PagMqypOzbsB6fzT0drbo6Z70rYBS5N4byU1I9wrv//jl7qj8JOqSA2L57BpCEiJGHzvJE Mxd/UwJTS5MgSLK82XU6LZ0jZZMIM1tWLOtjEY2bAus5a79nTD8Z9Isq8cbbHt3fNhBdWOdw f4Vr4BqEH0LZ7M/WyUj25fQr3zKjzv30cRqJlHDgkq+zT3aGn73viTGCBF4wggRaAgEBMIHy MIHcMQswCQYDVQQGEwJHQjEXMBUGA1UEChMOQ29tb2RvIExpbWl0ZWQxHTAbBgNVBAsTFENv bW9kbyBUcnVzdCBOZXR3b3JrMUYwRAYDVQQLEz1UZXJtcyBhbmQgQ29uZGl0aW9ucyBvZiB1 c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9yZXBvc2l0b3J5MR8wHQYDVQQLExYoYykyMDAy IENvbW9kbyBMaW1pdGVkMSwwKgYDVQQDEyNDb21vZG8gQ2xhc3MgMyBTZWN1cml0eSBTZXJ2 aWNlcyBDQQIRANO+/JTb13KkyXGyVrpA3igwCQYFKw4DAhoFAKCCAsEwGAYJKoZIhvcNAQkD MQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDQwNTEwMTkyODAwWjAjBgkqhkiG9w0B CQQxFgQUOWxrUUJqv8K8ekzaNTj0Q1WUp/4wUgYJKoZIhvcNAQkPMUUwQzAKBggqhkiG9w0D BzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwIC ASgwggEDBgkrBgEEAYI3EAQxgfUwgfIwgdwxCzAJBgNVBAYTAkdCMRcwFQYDVQQKEw5Db21v ZG8gTGltaXRlZDEdMBsGA1UECxMUQ29tb2RvIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPVRl cm1zIGFuZCBDb25kaXRpb25zIG9mIHVzZTogaHR0cDovL3d3dy5jb21vZG8ubmV0L3JlcG9z aXRvcnkxHzAdBgNVBAsTFihjKTIwMDIgQ29tb2RvIExpbWl0ZWQxLDAqBgNVBAMTI0NvbW9k byBDbGFzcyAzIFNlY3VyaXR5IFNlcnZpY2VzIENBAhEA0778lNvXcqTJcbJWukDeKDCCAQUG CyqGSIb3DQEJEAILMYH1oIHyMIHcMQswCQYDVQQGEwJHQjEXMBUGA1UEChMOQ29tb2RvIExp bWl0ZWQxHTAbBgNVBAsTFENvbW9kbyBUcnVzdCBOZXR3b3JrMUYwRAYDVQQLEz1UZXJtcyBh bmQgQ29uZGl0aW9ucyBvZiB1c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9yZXBvc2l0b3J5 MR8wHQYDVQQLExYoYykyMDAyIENvbW9kbyBMaW1pdGVkMSwwKgYDVQQDEyNDb21vZG8gQ2xh c3MgMyBTZWN1cml0eSBTZXJ2aWNlcyBDQQIRANO+/JTb13KkyXGyVrpA3igwDQYJKoZIhvcN AQEBBQAEgYAP+0zdLBQ005hUONEWOKwvYFTV0h7b2U+/auZfN0s4Wz4gFXSDSVmaMZAYRnur xVO1NWAtQmq23FQphU9iJ8HIAMcSYI3BifCIZTell6MkbQhXZ6D4ytwzI3ZpuH+VYSgxoKrI bUu4NTzY6CNHFw4qWOTuQswm7o8Z8zzPnMOCsgAAAAAAAA --------------ms070108060207050503020303--