in reply to How mature is Catalyst?

've been using it for a couple of projects at work, as well as some things of my own, for about a month or two. Overall it's a neat MVC implementation, but I've found that if you want to step outside the catalyst box, you can run into some problems.

For example, I like to use the in-built apache/mod-perl authz and authen handlers, but catalyst has its own way of handling authz/en (probably because it is not tied to being run under apache - fair enough, I suppose). It took me a while to figure out how to let mod_perl auth handlers take care of user authentication without catalyst getting in the way.

Also if you are using the catalyst-provided CDBI model kit, you'd better make sure all tables in your database have a primary key defined. I had to bypass the Catalyst::M::CDBI abstraction and use Class::DBI directly for a couple of tables that had no such key.

Overall though it has speeded up development for some projects that might otherwise have taken a lot longer - I was able to put together a new application that ties together three disparate data sources spread over two servers, in a little over three days, including requirements gathering, initial design, test creation, and coding. It's not complete, but I doubt I'd have experienced that sort of development speed had I not been using catalyst.

Replies are listed 'Best First'.
Re^2: Catalyst?
by perrin (Chancellor) on Sep 13, 2005 at 15:20 UTC
    Class::DBI does not work at all on tables without a primary key. If you have such tables and try to use them with Class::DBI, you will run into problems.

      Ah, I should have been clearer. The default Catalyst::Model::CDBI class attempts to load *all* tables (using Class::DBI::Loader), which includes those without a primary key. Although I could have passed it a regexp of tables to include, that would soon become cumbersome. Since I only needed a few tables anyway, and they are all read-only (for this application), I bypassed C:M:CDBI for the tables I'm using.

      Sorry for any confusion.