[Catalyst] How to handle development vs production, required vs recommended module dependencies

Daniel Austin daniel.austin at gmail.com
Mon Aug 31 01:44:13 GMT 2009


Hello

I'm curious how other Catalyst developers are managing their CPAN
module dependencies.

I see our current application as having four types of module dependencies:

* Modules that are required for the application to run *at all*. These
are specified using "requires" statements in Makefile.PL (and also,
the "all from" statement which points at the main Catalyst application
class).

* Modules that are not required, but if present, add additional
functionality. These are specified using "recommends" statements in
the Makefile.PL.

* Modules that are only needed by developers.
 -- Some of these are just needed for testing (eg HTML validator) so I
use "test_requires". That seems to work fine but I don't get prompted
"Do you want to permanently install these" which is what I was
expecting for some reason.
-- Others, like Catalyst::Devel are needed for any kind of development
and not just to run tests. But they're not needed for production and
should not be a dependency. I specify these using "requires" but I
have it inside an "if block" which checks the command line to see if
Makefile.PL is being run for a developer or not.

* Finally, there are modules which are recommended for developers but
not required (for example, Devel::Cover for code coverage). I specify
these using "recommends", but again it's inside the same if block
described above.

Interested to hear how others might be handling this. It seems to work
for us but I'm still learning Module::Install.

Thanks

Dan



More information about the Catalyst mailing list