[sf-perl] Mason applications and Module::Build

Keefer, Tim tkeefer at ebay.com
Sat Mar 6 10:32:28 PST 2010


Hi,

Does anyone know if there's already some code that supports bundling HTML::Mason or other perl web applications into a CPAN distribution? I've written a Module::Build subclass that works really well for me and I'm wondering if it would be useful for others. I'm also looking for advice about what CPAN namespace it could go under. However, I don't want to go through the trouble of putting this on CPAN if there's already something that does this. Below is a section of the docs that should give you a better idea of what I'm talking about. 

I realize you guys had a meetup a few weeks ago which would have been a great place to bring this up. I tried to travel up for it, but I'm all the way down in the south part of the bay area and couldn't make it.

Cheers,
-Tim
 
=head1 Name

{some name} - a subclass of Module::Build to perform custom installs

=head1 Description

Use this module instead of Module::Build (which it subclasses).  Use
any or all of the Module::Build constructor keys as needed.  

=head1 Setting Up Your Application

=head2 Application Layout

This the typical directory structure for an application

    Apps-MyApp/
    	Build.PL
    	Changes
    	MANIFEST
    	MANIFEST.SKIP
    	INSTALL.SKIP
    	conf/
    		_app.conf
    		_myapachevhost.conf
    		app.rules
    	html/
    		autohandler.mpl
    		css/
    		img/
    		inc/
    			footer.html
    			header.html
    		index.html
    	lib/
    		Apps/
                        MyApp.pm
    			MyApp/
    			   Foo.pm
    	t/
    		01use.t
    		02myapp.t

=head2 Build and Deploy

    perl Build.PL
    ./Build test     # runs the application tests    
    ./Build install  # install the application
    ./Build dist     # build the application tarbal

=over 4

=head1 Setting up the application's Aeon Build.PL script

=over 4

=item Sample Build.PL

    use strict;
    use File::HomeDir;

    my $build = {some name}->new(
        install_base_default => ( File::HomeDir->my_home . "/releases" ),
        get_options => {
            env   =>  { type => '=s' },
            rules =>  { type => '=s' },
            install_base  => { type => '=s' },
        },
        apache_conf        => 'conf/myapachevhost.conf',
        license                => 'perl',
        module_name        => 'Apps::MyApp',
        requires           => {
            'perl'         => '5.8.1',
        },
        create_makefile_pl  => 'passthrough',
        dist_abstract => 'Mason site for Apps Foo',
        script_files        => [ glob('bin/*') ],
        'recursive_test_files' => 1,
    );

    $build->create_build_script;


More information about the SanFrancisco-pm mailing list