Skip to content

Instantly share code, notes, and snippets.

Created June 2, 2009 05:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/122081 to your computer and use it in GitHub Desktop.
Save anonymous/122081 to your computer and use it in GitHub Desktop.
From 1040ce8e2b299659eec9551284e7575362868f84 Mon Sep 17 00:00:00 2001
From: Kieren Diment <kd@fenchurch.local>
Date: Tue, 2 Jun 2009 15:37:29 +1000
Subject: [PATCH] update scripts
---
script/myapp_cgi.pl | 4 +-
script/myapp_create.pl | 19 +++++++--
script/myapp_fastcgi.pl | 16 ++++----
script/myapp_server.pl | 107 +++++++++++++++++++++++++++++++++--------------
script/myapp_test.pl | 4 +-
5 files changed, 103 insertions(+), 47 deletions(-)
diff --git a/script/myapp_cgi.pl b/script/myapp_cgi.pl
index 362fc78..27d7834 100755
--- a/script/myapp_cgi.pl
+++ b/script/myapp_cgi.pl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!/usr/bin/env perl
BEGIN { $ENV{CATALYST_ENGINE} ||= 'CGI' }
@@ -31,7 +31,7 @@ Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
-This library is free software, you can redistribute it and/or modify
+This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
diff --git a/script/myapp_create.pl b/script/myapp_create.pl
index 747a6f0..e7c7b71 100755
--- a/script/myapp_create.pl
+++ b/script/myapp_create.pl
@@ -1,10 +1,22 @@
-#!/usr/bin/perl -w
+#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
use Pod::Usage;
-use Catalyst::Helper;
+eval "use Catalyst::Helper;";
+
+if ($@) {
+ die <<END;
+To use the Catalyst development tools including catalyst.pl and the
+generated script/myapp_create.pl you need Catalyst::Helper, which is
+part of the Catalyst-Devel distribution. Please install this via a
+vendor package or by running one of -
+
+ perl -MCPAN -e 'install Catalyst::Devel'
+ perl -MCPANPLUS -e 'install Catalyst::Devel'
+END
+}
my $force = 0;
my $mech = 0;
@@ -39,7 +51,6 @@ myapp_create.pl [options] model|view|controller name [helper] [options]
Examples:
myapp_create.pl controller My::Controller
- myapp_create.pl controller My::Controller BindLex
myapp_create.pl -mechanize controller My::Controller
myapp_create.pl view My::View
myapp_create.pl view MyView TT
@@ -68,7 +79,7 @@ Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
-This library is free software, you can redistribute it and/or modify
+This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
diff --git a/script/myapp_fastcgi.pl b/script/myapp_fastcgi.pl
index ade4959..1cdd628 100755
--- a/script/myapp_fastcgi.pl
+++ b/script/myapp_fastcgi.pl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!/usr/bin/env perl
BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' }
@@ -12,7 +12,7 @@ use MyApp;
my $help = 0;
my ( $listen, $nproc, $pidfile, $manager, $detach, $keep_stderr );
-
+
GetOptions(
'help|?' => \$help,
'listen|l=s' => \$listen,
@@ -25,13 +25,13 @@ GetOptions(
pod2usage(1) if $help;
-MyApp->run(
- $listen,
+MyApp->run(
+ $listen,
{ nproc => $nproc,
- pidfile => $pidfile,
+ pidfile => $pidfile,
manager => $manager,
detach => $detach,
- keep_stderr => $keep_stderr,
+ keep_stderr => $keep_stderr,
}
);
@@ -44,7 +44,7 @@ myapp_fastcgi.pl - Catalyst FastCGI
=head1 SYNOPSIS
myapp_fastcgi.pl [options]
-
+
Options:
-? -help display this help and exits
-l -listen Socket path to listen on
@@ -73,7 +73,7 @@ Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
-This library is free software, you can redistribute it and/or modify
+This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
diff --git a/script/myapp_server.pl b/script/myapp_server.pl
index ffd0163..e882de5 100755
--- a/script/myapp_server.pl
+++ b/script/myapp_server.pl
@@ -1,10 +1,10 @@
-#!/usr/bin/perl -w
+#!/usr/bin/env perl
-BEGIN {
+BEGIN {
$ENV{CATALYST_ENGINE} ||= 'HTTP';
- $ENV{CATALYST_SCRIPT_GEN} = 31;
+ $ENV{CATALYST_SCRIPT_GEN} = 38;
require Catalyst::Engine::HTTP;
-}
+}
use strict;
use warnings;
@@ -20,50 +20,91 @@ my $host = undef;
my $port = $ENV{MYAPP_PORT} || $ENV{CATALYST_PORT} || 3000;
my $keepalive = 0;
my $restart = $ENV{MYAPP_RELOAD} || $ENV{CATALYST_RELOAD} || 0;
-my $restart_delay = 1;
-my $restart_regex = '(?:/|^)(?!\.#).+(?:\.yml$|\.yaml$|\.conf|\.pm)$';
-my $restart_directory = undef;
-my $follow_symlinks = 0;
+my $background = 0;
+my $pidfile = undef;
+
+my $check_interval;
+my $file_regex;
+my $watch_directory;
+my $follow_symlinks;
my @argv = @ARGV;
GetOptions(
'debug|d' => \$debug,
- 'fork' => \$fork,
+ 'fork|f' => \$fork,
'help|?' => \$help,
'host=s' => \$host,
- 'port=s' => \$port,
+ 'port|p=s' => \$port,
'keepalive|k' => \$keepalive,
'restart|r' => \$restart,
- 'restartdelay|rd=s' => \$restart_delay,
- 'restartregex|rr=s' => \$restart_regex,
- 'restartdirectory=s@' => \$restart_directory,
+ 'restartdelay|rd=s' => \$check_interval,
+ 'restartregex|rr=s' => \$file_regex,
+ 'restartdirectory=s@' => \$watch_directory,
'followsymlinks' => \$follow_symlinks,
+ 'background' => \$background,
+ 'pidfile=s' => \$pidfile,
);
pod2usage(1) if $help;
-if ( $restart && $ENV{CATALYST_ENGINE} eq 'HTTP' ) {
- $ENV{CATALYST_ENGINE} = 'HTTP::Restarter';
-}
if ( $debug ) {
$ENV{CATALYST_DEBUG} = 1;
}
-# This is require instead of use so that the above environment
-# variables can be set at runtime.
-require MyApp;
-
-MyApp->run( $port, $host, {
- argv => \@argv,
- 'fork' => $fork,
- keepalive => $keepalive,
- restart => $restart,
- restart_delay => $restart_delay,
- restart_regex => qr/$restart_regex/,
- restart_directory => $restart_directory,
- follow_symlinks => $follow_symlinks,
-} );
+# If we load this here, then in the case of a restarter, it does not
+# need to be reloaded for each restart.
+require Catalyst;
+
+# If this isn't done, then the Catalyst::Devel tests for the restarter
+# fail.
+$| = 1 if $ENV{HARNESS_ACTIVE};
+
+my $runner = sub {
+ # This is require instead of use so that the above environment
+ # variables can be set at runtime.
+ require MyApp;
+
+ MyApp->run(
+ $port, $host,
+ {
+ argv => \@argv,
+ 'fork' => $fork,
+ keepalive => $keepalive,
+ background => $background,
+ pidfile => $pidfile,
+ }
+ );
+};
+
+if ( $restart ) {
+ die "Cannot run in the background and also watch for changed files.\n"
+ if $background;
+
+ require Catalyst::Restarter;
+
+ my $subclass = Catalyst::Restarter->pick_subclass;
+
+ my %args;
+ $args{follow_symlinks} = 1
+ if $follow_symlinks;
+ $args{directories} = $watch_directory
+ if defined $watch_directory;
+ $args{sleep_interval} = $check_interval
+ if defined $check_interval;
+ $args{filter} = qr/$file_regex/
+ if defined $file_regex;
+
+ my $restarter = $subclass->new(
+ %args,
+ start_sub => $runner,
+ );
+
+ $restarter->run_and_watch;
+}
+else {
+ $runner->();
+}
1;
@@ -86,6 +127,7 @@ myapp_server.pl [options]
-r -restart restart when files get modified
(defaults to false)
-rd -restartdelay delay between file checks
+ (ignored if you have Linux::Inotify2 installed)
-rr -restartregex regex match files that trigger
a restart when modified
(defaults to '\.yml$|\.yaml$|\.conf|\.pm$')
@@ -94,6 +136,9 @@ myapp_server.pl [options]
(defaults to '[SCRIPT_DIR]/..')
-follow_symlinks follow symlinks in search directories
(defaults to false. this is a no-op on Win32)
+ -background run the process in the background
+ -pidfile specify filename for pid file
+
See also:
perldoc Catalyst::Manual
perldoc Catalyst::Manual::Intro
@@ -108,7 +153,7 @@ Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
-This library is free software, you can redistribute it and/or modify
+This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
diff --git a/script/myapp_test.pl b/script/myapp_test.pl
index aa7fd0c..0025e9a 100755
--- a/script/myapp_test.pl
+++ b/script/myapp_test.pl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!/usr/bin/env perl
use strict;
use warnings;
@@ -47,7 +47,7 @@ Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
-This library is free software, you can redistribute it and/or modify
+This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
--
1.6.2.4+GitX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment