kyle at efactormedia.com
Sat Aug 13 00:16:08 CEST 2005
I just wanted to present the other side of the characterization of Ruby
on Rails that Sebastian Riedel made. Here's some counterpoints:
* Rails is built as 5 separate components, each available from RubyGems
(CPAN analogue). They can be and are used separately, although this is
not that common.
* Model classes are *NOT* strictly bound to controllers.
* You can use multiple view types. At this point, eRb and builder are
the documented ones.
* Rails dispatcher "routes" is flexible, as it has just recently been
rewritten. As to the example Sebastian made of index.html requiring a
rewrite layer, in Rails, just put the index.html file in the public
directory and it automatically is on your site.
* Ruby on Rails is extendable. I have added tagging and file upload
support to ActiveRecord. It was easy.
* Multiple inheritance is considered an anti-pattern by many. Ruby
supports module mix-ins, which give the benefits of multiple inheritance
without some of the drawbacks.
* Ruby is slower than perl. You're right about that. Hopefully Rails
helps spur the developement of Ruby 2, which will have a Java-like
* Rails is both "all-in-wonder" and componentized. I love the
all-in-one-ness, because the integration is flawless, and you can go to
one site for the documentation and updates.
I'm using rails full-time, and it is all it's cracked up to be, with
* While a production server is incredibly easy, deployment can sometimes
be a bit tricky to set up.
* Sometimes the Ruby libraries are inadequate. I ran into this with PDF
generation. Ruby is easy to extend with C libraries. I prefer to setup
PHP on the same server, and run stuff like PDF generation as a web
service off a different port.
> Well, i'm not really unpartial, but i'll try be fair. :)
> * First, Catalyst is no port of Rails, it has fundamental
> philosophical differences, Catalyst was built with CPAN in mind, so
> you can easily have multiple views (TT/Mason...) and models
> (DBIx::Class, Tangram...) in the same app.
> Rails doesn't do that, controller classes are strictly bound to model
> (table) classes, thats a bit like Maypole, but split into two classes.
> * Catalyst's dispatcher is very flexible, you can have all kinds of
> uri's, even regex is supported while Rails sticks to the /class/
> method/arg1/arg2/arg3 scheme, which requires a rewrite layer to get
> fancy urls like /index.html (yes thats against their own DRY slogan).
> * Catalyst just needs a small glue to add more components, it's made
> to be extended, especially through multiple inheritance, which Ruby
> doesn't even support.
> * Rails is also slower, thats because Ruby is generally much slower
> than Perl and Catalyst has a much more optimized dispatcher.
> * Rails documentation is much better (no surprise since they can work
> fulltime on it)
> * Rails is a all-in-wonder package including a orm and template
> system while Catalyst follows the CPAN philosophy to split everything
> into small packages.
> So to make it short, Rails is better documented and very trendy
> (hyped) while Catalyst happens to be faster and much more flexible.
> Catalyst mailing list
> Catalyst at lists.rawmode.org
More information about the Catalyst