[Dancer-users] Packaging Dancer to CPAN

Pedro Melo melo at simplicidade.org
Thu May 26 23:35:56 CEST 2011


Hi,

On Wed, May 25, 2011 at 6:02 PM, Pedro Melo <melo at simplicidade.org> wrote:
> Hi,
>
> I need to repack a Dancer-based site as a CPAN module. I remember
> seeing a bit of documentation about this somewhere but I can't find it
> at the moment.

Ok, got something to work with a couple problems to be solved: I can
package a Dancer app, deploy it via cpan/cpanm and start it up with
plackup or standalone. The problems are:

 * test suite fails. I need to tweak Dancer::Test a bit *I think*,
still looking into it;
 * the logger tries to create the log inside PERL5LIB: at first glance
I didn't see a way to disable
   logging. Ideally a ENV var would be best.

This is the process so far, from start to finish:

1. create a new dancer app and move into it:

  dancer -a w
  cd w

2. create a dist directory to hold the static files:

  mkdir -p lib/w/Dist

3. move the static files into it:

  mv config.yml environments public views lib/w/Dist

4. Generate a startup package like this one (adjust to the name of your app):

  cat > lib/w/Dist.pm <<'EOF'
package w::Dist;

BEGIN {
  my $dist = $INC{'w/Dist.pm'};
  $dist =~ s/[.]pm$//g;

  $ENV{DANCER_APPDIR}  = $dist;
  $ENV{DANCER_CONFDIR} = $dist;
}

use Dancer;
use w;

sub run      { dance() }
sub psgi_app { local $ENV{PLACK_ENV} = 1; dance() }

1;
EOF

4. regen MANIFEST:

  rm -rf lib/w/Dist/logs
  egrep -v '^(lib|config.yml|environments|public|views)' MANIFEST > MANIFEST.NEW
  find lib -type f >> MANIFEST.NEW
  rm -f MANIFEST
  mv MANIFEST.NEW MANIFEST

5. Build your dist:

  perl Makefile.PL
  make dist

6. test your new dist:

  cpanm --notest w-0.1.tar.gz
  cd
  plackup -Mw::Dist -e 'w::Dist->psgi_app'
  perl -Mw::Dist -e 'w::Dist->run'

This is of course work in progress, but most of it can be an automatic
process. I'm still new to the Dancer internals, but right now I don't
think I can solve the problem with the tests without changes to Dancer
itself.

Is there interest on a patch to make this easier, maybe as easy as a
'dancer pack-cpan' or something like this?

Thank you for your feedback.

Bye,
-- 
Pedro Melo
http://www.simplicidade.org/
xmpp:melo at simplicidade.org
mailto:melo at simplicidade.org


More information about the Dancer-users mailing list