There is yet another blog discussion about Ruby on Rails vs. Java web frameworks.
I think you find this type of discussion all over with the generic version being:
Technology X is simpler than Y so it either:
- Is too slow
- Is TOO simple
- It doesn’t scale
- It’s dad got beaten up by my dad
Then the Rails creator, David Hannson came back at them.
It is interesting that David isn’t sure that showing the scaffolding piece in his demo was a good thing. Scaffolding lets you do a quick “there is my database, give me active record access to it now please”. You will end up with actions/views for your model at this point, which is nice for getting started / prototyping, or for simple “Naked Object” access for admins. Even David admits thats it probably shouldn’t be used in ‘real projects’.
So, my view on this?
Is Rails too simple?
It is simple in a good way. You can get started very quickly. You can incrementally tweak your architecture and extend Rails where needed BUT NOT BEFORE. I can start with scaffolding and then move to handling the model more myself. Basically everything is there for you to hook in.
Is Rails too slow?
Although I haven’t had the pleasure in deploying a Rails solution to a high end site, I have never had any problems, sites that run it are speedy and consistent, and there is NO REASON why Rails would force a slow application. Of course, a badly developed application that uses Rails could easily be slow (as with everything).
Can Rails Scale?
Web sites can easily scale as long as you have written your application in a way that can handle scalability. Ruby, and/or Rails, has nothing implicit about it which says “this can’t scale”. I know that the Java camp tends to think that it is the only scalable solution for “enterprise” apps, but it isn’t ;)
Rails isn’t the be all and end all of web frameworks. There are always going to be pro’s and con’s between two frameworks. I personally sometimes like rich components (a la tapestry), although there is nothing stopping you from building these components that you could reuse in Rails.