Twentieth century boysTrackbacks
Trackback specific URI for this entry
No Trackbacks
Comments
Display comments as
(Linear | Threaded)
Hey, nice post!
I think the thing is that Rails on Lisp actually exists. It is just tied up in a bunch of libraries. My favourite features of Rails are the ORM, MVC and migrations, which are adaquetly implemented by CLSQL, either HTML-TEMPLATE or CL-WHO (I prefer CL-WHO but purists would prefer HTML-TEMPLATE) and CL-MIGRATIONS. The only problem with CL-MIGRATIONS is that it requires you to write your own SQL, but not a big deal. In the end, I found after reading the Agile Web Dev book that there isn't anything that extra special to Rails that isn't served by existing Lisp libraries. The thing I despise about rails is the emphasis on wizard-like code generation. My view on code generation is that you either generate the code every time (like Lisp macros) or you don't generate it at all. It is stupid, stupid, stupid, to generate code once. That being said, Rails fulfills a large niche: web-enabled databases. It is dumb easy to expose a database through the browser with Rails. On the other hand, Weblocks does things a lot differently in that it focuses on components. I'm still up in the air about the current design of the system as overriding the generated HTML is not very intuitive, but the idea is solid.
I don't see a real problem with CL-MIGRATIONS requiring you to write SQL. With any non-trivial problem in ActiveRecord, you need to write SQL, too. It just happens to be in Ruby syntax. (Good luck figuring out what to pass to :joins!) I always have to haul out my big SQL book, write and debug SQL, and then convert it to Ruby. And if you ever change databases (I've done it!), you'll need to debug a bunch of SQL, anyway.
Rails has many problems (don't get me started -- heh!), but an "emphasis on wizard-like code generation" is not one of them. I don't think any of my current Rails project is generated code, and that seems to be the concensus among the other programmers I know. There is a scaffolding system, but if the program lives longer than about a week, it tends to all get replaced. That's what scaffoldings are.
I'm developing a browser game with Weblocks.
SSL is not of importance here, and distributed computing isn't an issue yet, but all the other things you might want to have in a Web 2.0 app are there. So far it has worked out fine and with a huge lot less hassle than I had had if I wrote the thing in, yuk, plain PHP (or frameworked PHP, for that matter). I suggest you try out Weblocks and see for yourself. It's easy to get started (although continuing is a bit more involved, as it's a quite young framework). Leslie
A quick data point: I've got a production UCW app running that's been getting 10-20k pageviews/day without breaking a sweat on a pretty modest virtual server (linode). Hopefully soon it'll be seeing much more traffic
I like cl-migrations and writing my db code in sql. Much simpler than translating/abstracting, as Sohail points out. I recommend pg-introspect as well, as it keeps all db definitions in the one place it should be. I've never seen an ORM layer handle the subtleties of db constraints well. Something is always lost in the abstraction. Why bother? That code belongs in the db. Sorry, no SSL or shopping cart, but managing sessions and doing input validation under UCW are simple. I love the components and continuations model, although it took me a little while to get acclimated. I'm only using the continuation style with about half of the toplevel window components. UCW is nice in that you can choose to use the hunchentoot/traditional/RESTy style when that makes more sense. Haven't needed to split to multiple servers yet. Should be easy though: second db machine, and if we need to run multiple UCWs just sticky-session load balance behind a proxy. I'm not a fan of keeping session state in the db, but then losing some session data on crash isn't a huge deal for me. I'm interested in watching how weblocks develops. It's got a lot of potential. Add Comment
|
QuicksearchBlog AdministrationKategorienTagsCalendar
Powered by |
|||||||||||||||||||||||||||||||||||||||||||||||||