Catalyst frustrations

Phred on 2007-11-27T05:17:05

Maybe it's just me, but I've been having a hard time working with Catalyst. One of the things I like about Perl is that it gets out of your way and lets you get things done. Perl would rather you stay out of the house not because it is holding a baseball bat, but because it asks nicely. Catalyst on the other hand, will quickly break both your kneecaps if you think about coming in the house through any other way than the front door.

Yes this is a rant lacking in specific complaints and aimed in the direction of anyone who will listen :) The general problems that I've been running into though have been that Catalyst tries to do too much for you. I ran into a problem tonight where I was writing mechanized tests using Test::WWW::Mechanize::Catalyst. Our setup uses the Catalyst::Plugin::RequireSSL plugin to make sure that certain requests were made over ssl.

So I was merrily writing my tests, and I call $mech->get_ok($url). BANG! It fails, I inspect the response and it is a 302 redirecting me to the http version of the destination url, with the response content of the page attached. Huh? I didn't know 302 responses should have payloads. The group I'm working with is insistent that we use as much catalyst as possible though, so I figure that the fastest way to solve my problem is just work around it, and follow the redirect. I do that, and then check the response content for my session status message but it is not there (it was present in the 302 payload I redirected from). So now I either have to go fix Catalyst::Plugin::RequireSSL (and endure the pain that is RT), or leave my test incomplete.

Catalyst seems like a good idea in theory, but with all the overhead it has brought to my development, I am wondering if it is still too early to use seriously for rapid development of scalable systems. I'm sure the same thing was said in the early days of Java Spring, Hibernate, etc. I just get a bit frustrated when the tools I am using get in the way of getting things done.