[Catalyst-commits] r13202 - trunk/Catalyst-Plugin-Scheduler

bricas at dev.catalyst.perl.org bricas at dev.catalyst.perl.org
Mon May 3 13:11:33 GMT 2010


Author: bricas
Date: 2010-05-03 14:11:33 +0100 (Mon, 03 May 2010)
New Revision: 13202

Removed:
   trunk/Catalyst-Plugin-Scheduler/Build.PL
   trunk/Catalyst-Plugin-Scheduler/MANIFEST
   trunk/Catalyst-Plugin-Scheduler/README
Modified:
   trunk/Catalyst-Plugin-Scheduler/Changes
   trunk/Catalyst-Plugin-Scheduler/Makefile.PL
Log:
Switch to Module::Install

Deleted: trunk/Catalyst-Plugin-Scheduler/Build.PL
===================================================================
--- trunk/Catalyst-Plugin-Scheduler/Build.PL	2010-05-03 13:10:02 UTC (rev 13201)
+++ trunk/Catalyst-Plugin-Scheduler/Build.PL	2010-05-03 13:11:33 UTC (rev 13202)
@@ -1,21 +0,0 @@
-use strict;
-use Module::Build;
-
-my $build = Module::Build->new(
-    create_makefile_pl => 'passthrough',
-    license            => 'perl',
-    module_name        => 'Catalyst::Plugin::Scheduler',
-    requires           => { 
-        'Catalyst'              => '5.61',
-        'DateTime::Event::Cron' => 0,
-        'Set::Scalar'           => 0,
-        'Storable'              => 0,
-        'YAML'                  => 0,
-        'MRO::Compat'           => 0,
-    },
-    create_makefile_pl => 'passthrough',
-    test_files   => [
-        glob('t/*.t') 
-    ]
-);
-$build->create_build_script;

Modified: trunk/Catalyst-Plugin-Scheduler/Changes
===================================================================
--- trunk/Catalyst-Plugin-Scheduler/Changes	2010-05-03 13:10:02 UTC (rev 13201)
+++ trunk/Catalyst-Plugin-Scheduler/Changes	2010-05-03 13:11:33 UTC (rev 13202)
@@ -2,6 +2,7 @@
 
 0.10    TO BE RELEASED
         - Fix warnings in test suite (BRICAS)
+        - Switch to Module::Install (BRICAS)
 
 0.09    2009-05-07 09:15:00
         - Change from NEXT to MRO::Compat. (agladdish)

Deleted: trunk/Catalyst-Plugin-Scheduler/MANIFEST
===================================================================
--- trunk/Catalyst-Plugin-Scheduler/MANIFEST	2010-05-03 13:10:02 UTC (rev 13201)
+++ trunk/Catalyst-Plugin-Scheduler/MANIFEST	2010-05-03 13:11:33 UTC (rev 13202)
@@ -1,25 +0,0 @@
-Build.PL
-Changes
-lib/Catalyst/Plugin/Scheduler.pm
-Makefile.PL
-MANIFEST			This list of files
-META.yml
-README
-t/01use.t
-t/02pod.t
-t/03podcoverage.t
-t/04critic.rc
-t/04critic.t
-t/04schedule.t
-t/05auto_run.t
-t/06trigger.t
-t/07plugin.t
-t/08yaml.t
-t/09long.t
-t/lib/Catalyst/Plugin/PluginTest.pm
-t/lib/PluginTestApp.pm
-t/lib/PluginTestApp/Controller/Root.pm
-t/lib/TestApp.pm
-t/lib/TestApp/Controller/Cron.pm
-t/lib/TestApp/Controller/Root.pm
-t/lib/TestApp/test.yml

Modified: trunk/Catalyst-Plugin-Scheduler/Makefile.PL
===================================================================
--- trunk/Catalyst-Plugin-Scheduler/Makefile.PL	2010-05-03 13:10:02 UTC (rev 13201)
+++ trunk/Catalyst-Plugin-Scheduler/Makefile.PL	2010-05-03 13:11:33 UTC (rev 13202)
@@ -1,31 +1,21 @@
-# Note: this file was auto-generated by Module::Build::Compat version 0.03
-    
-    unless (eval "use Module::Build::Compat 0.02; 1" ) {
-      print "This module requires Module::Build to install itself.\n";
-      
-      require ExtUtils::MakeMaker;
-      my $yn = ExtUtils::MakeMaker::prompt
-	('  Install Module::Build now from CPAN?', 'y');
-      
-      unless ($yn =~ /^y/i) {
-	die " *** Cannot install without Module::Build.  Exiting ...\n";
-      }
-      
-      require Cwd;
-      require File::Spec;
-      require CPAN;
-      
-      # Save this 'cause CPAN will chdir all over the place.
-      my $cwd = Cwd::cwd();
-      
-      CPAN::Shell->install('Module::Build::Compat');
-      CPAN::Shell->expand("Module", "Module::Build::Compat")->uptodate
-	or die "Couldn't install Module::Build, giving up.\n";
-      
-      chdir $cwd or die "Cannot chdir() back to $cwd: $!";
-    }
-    eval "use Module::Build::Compat 0.02; 1" or die $@;
-    
-    Module::Build::Compat->run_build_pl(args => \@ARGV);
-    require Module::Build;
-    Module::Build::Compat->write_makefile(build_class => 'Module::Build');
+use inc::Module::Install 0.91;
+
+if( -e 'MANIFEST.SKIP' ) {
+    system( 'pod2text lib/Catalyst/Plugin/Scheduler.pm > README' );
+}
+
+perl_version '5.008';
+
+name 'Catalyst-Plugin-Scheduler';
+all_from 'lib/Catalyst/Plugin/Scheduler.pm';
+
+requires 'Catalyst::Runtime' => '5.61';
+requires 'DateTime::Event::Cron';
+requires 'Set::Scalar';
+requires 'Storable';
+requires 'YAML';
+requires 'MRO::Compat';
+
+test_requires 'Test::More';
+
+WriteAll;

Deleted: trunk/Catalyst-Plugin-Scheduler/README
===================================================================
--- trunk/Catalyst-Plugin-Scheduler/README	2010-05-03 13:10:02 UTC (rev 13201)
+++ trunk/Catalyst-Plugin-Scheduler/README	2010-05-03 13:11:33 UTC (rev 13202)
@@ -1,302 +0,0 @@
-NAME
-    Catalyst::Plugin::Scheduler - Schedule events to run in a cron-like
-    fashion
-
-SYNOPSIS
-        use Catalyst qw/Scheduler/;
-        
-    # run remove_sessions in the Cron controller every hour
-        __PACKAGE__->schedule(
-            at    => '0 * * * *',
-            event => '/cron/remove_sessions'
-        );
-        
-    # Run a subroutine at 4:05am every Sunday
-        __PACKAGE__->schedule(
-            at    => '5 4 * * sun',
-            event => \&do_stuff,
-        );
-        
-    # A long-running scheduled event that must be triggered 
-        # manually by an authorized user
-        __PACKAGE__->schedule(
-            trigger => 'rebuild_search_index',
-            event   => '/cron/rebuild_search_index',
-        );
-        $ wget -q http://www.myapp.com/?schedule_trigger=rebuild_search_index
-
-DESCRIPTION
-    This plugin allows you to schedule events to run at recurring intervals.
-    Events will run during the first request which meets or exceeds the
-    specified time. Depending on the level of traffic to the application,
-    events may or may not run at exactly the correct time, but it should be
-    enough to satisfy many basic scheduling needs.
-
-CONFIGURATION
-    Configuration is optional and is specified in
-    MyApp->config->{scheduler}.
-
-  logging
-    Set to 1 to enable logging of events as they are executed. This option
-    is enabled by default when running under -Debug mode. Errors are always
-    logged regardless of the value of this option.
-
-  time_zone
-    The time zone of your system. This will be autodetected where possible,
-    or will default to UTC (GMT). You can override the detection by
-    providing a valid DateTime time zone string, such as 'America/New_York'.
-
-  state_file
-    The current state of every event is stored in a file. By default this is
-    $APP_HOME/scheduler.state. This file is created on the first request if
-    it does not already exist.
-
-  yaml_file
-    The location of the optional YAML event configuration file. By default
-    this is $APP_HOME/scheduler.yml.
-
-  hosts_allow
-    This option specifies IP addresses for trusted users. This option
-    defaults to 127.0.0.1. Multiple addresses can be specified by using an
-    array reference. This option is used for both events where auto_run is
-    set to 0 and for manually-triggered events.
-
-        __PACKAGE__->config->{scheduler}->{hosts_allow} = '192.168.1.1';
-        __PACKAGE__->config->{scheduler}->{hosts_allow} = [ 
-            '127.0.0.1',
-            '192.168.1.1'
-        ];
-
-SCHEDULING
-  AUTOMATED EVENTS
-    Events are scheduled by calling the class method "schedule".
-
-        MyApp->schedule(
-            at       => '0 * * * *',
-            event    => '/cron/remove_sessions',
-        );
-        
-    package MyApp::Controller::Cron;
-        
-    sub remove_sessions : Private {
-            my ( $self, $c ) = @_;
-            
-        $c->delete_expired_sessions;
-        }
-
-   at
-    The time to run an event is specified using crontab(5)-style syntax.
-
-        5 0 * * *      # 5 minutes after midnight, every day
-        15 14 1 * *    # run at 2:15pm on the first of every month
-        0 22 * * 1-5   # run at 10 pm on weekdays
-        5 4 * * sun    # run at 4:05am every Sunday
-
-    From crontab(5):
-
-        field          allowed values
-        -----          --------------
-        minute         0-59
-        hour           0-23
-        day of month   1-31
-        month          0-12 (or names, see below)
-        day of week    0-7 (0 or 7 is Sun, or use names)
-
-    Instead of the first five fields, one of seven special strings may
-    appear:
-
-        string         meaning
-        ------         -------
-        @yearly        Run once a year, "0 0 1 1 *".
-        @annually      (same as @yearly)
-        @monthly       Run once a month, "0 0 1 * *".
-        @weekly        Run once a week, "0 0 * * 0".
-        @daily         Run once a day, "0 0 * * *".
-        @midnight      (same as @daily)
-        @hourly        Run once an hour, "0 * * * *".
-
-   event
-    The event to run at the specified time can be either a Catalyst private
-    action path or a coderef. Both types of event methods will receive the
-    $c object from the current request, but you must not rely on any
-    request-specific information present in $c as it will be from a random
-    user request at or near the event's specified run time.
-
-    Important: Methods used for events should be marked "Private" so that
-    they can not be executed via the browser.
-
-   auto_run
-    The auto_run parameter specifies when the event is allowed to be
-    executed. By default this option is set to 1, so the event will be
-    executed during the first request that matches the specified time in
-    "at".
-
-    If set to 0, the event will only run when a request is made by a user
-    from an authorized address. The purpose of this option is to allow
-    long-running tasks to execute only for certain users.
-
-        MyApp->schedule(
-            at       => '0 0 * * *',
-            event    => '/cron/rebuild_search_index',
-            auto_run => 0,
-        );
-        
-    package MyApp::Controller::Cron;
-        
-    sub rebuild_search_index : Private {
-            my ( $self, $c ) = @_;
-            
-        # rebuild the search index, this may take a long time
-        }
-
-    Now, the search index will only be rebuilt when a request is made from a
-    user whose IP address matches the list in the "hosts_allow" config
-    option. To run this event, you probably want to ping the app from a cron
-    job.
-
-        0 0 * * * wget -q http://www.myapp.com/
-
-  MANUAL EVENTS
-    To create an event that does not run on a set schedule and must be
-    manually triggered, you can specify the "trigger" option instead of
-    "at".
-
-        __PACKAGE__->schedule(
-            trigger => 'send_email',
-            event   => '/events/send_email',
-        );
-
-    The event may then be triggered by a standard web request from an
-    authorized user. The trigger to run is specified by using a special GET
-    parameter, 'schedule_trigger'; the path requested does not matter.
-
-        http://www.myapp.com/?schedule_trigger=send_email
-
-    By default, manual events may only be triggered by requests made from
-    localhost (127.0.0.1). To allow other addresses to run events, use the
-    configuration option "hosts_allow".
-
-SCHEDULING USING A YAML FILE
-    As an alternative to using the schedule() method, you may define
-    scheduled events in an external YAML file. By default, the plugin looks
-    for the existence of a file called "schedule.yml" in your application's
-    home directory. You can change the filename using the configuration
-    option "yaml_file".
-
-    Modifications to this file will be re-read once per minute during the
-    normal event checking process.
-
-    Here's an example YAML configuration file with 4 events. Each event is
-    denoted with a '-' character, followed by the same parameters used by
-    the "schedule" method. Note that coderef events are not supported by the
-    YAML file.
-
-        ---
-        - at: '* * * * *'
-          event: /cron/delete_sessions
-        - event: /cron/send_email
-          trigger: send_email
-        - at: '@hourly'
-          event: /cron/hourly
-        - at: 0 0 * * *
-          auto_run: 0
-          event: /cron/rebuild_search_index
-
-SECURITY
-    All events are run inside of an eval container. This protects the user
-    from receiving any error messages or page crashes if an event fails to
-    run properly. All event errors are logged, even if logging is disabled.
-
-PLUGIN SUPPORT
-    Other plugins may register scheduled events if they need to perform
-    periodic maintenance. Plugin authors, be sure to inform your users if
-    you do this! Events should be registered from a plugin's "setup" method.
-
-        sub setup {
-            my $c = shift;
-            $c->NEXT::setup(@_);
-            
-        if ( $c->can('schedule') ) {
-                $c->schedule(
-                    at    => '0 * * * *',
-                    event => \&cleanup,
-                );
-            }
-        }
-
-CAVEATS
-    The time at which an event will run is determined completely by the
-    requests made to the application. Apps with heavy traffic may have
-    events run at very close to the correct time, whereas apps with low
-    levels of traffic may see events running much later than scheduled. If
-    this is a problem, you can use a real cron entry that simply hits your
-    application at the desired time.
-
-        0 * * * * wget -q http://www.myapp.com/
-
-    Events which consume a lot of time will slow the request processing for
-    the user who triggers the event. For these types of events, you should
-    use auto_run => 0 or manual event triggering.
-
-PERFORMANCE
-    The plugin only checks once per minute if any events need to be run, so
-    the overhead on each request is minimal. On my test server, the
-    difference between running with Scheduler and without was only around
-    0.02% (0.004 seconds).
-
-    Of course, when a scheduled event runs, performance will depend on
-    what's being run in the event.
-
-METHODS
-  schedule
-    Schedule is a class method for adding scheduled events. See the
-    "SCHEDULING"" in " section for more information.
-
-  scheduler_state
-    The current state of all scheduled events is available in an easy-to-use
-    format by calling $c->scheduler_state. You can use this data to build an
-    admin view into the scheduling engine, for example. This same data is
-    also displayed on the Catalyst debug screen.
-
-    This method returns an array reference containing a hash reference for
-    each event.
-
-        [
-            {
-                'last_run'    => '2005-12-29 16:29:33 EST',
-                'auto_run'    => 1,
-                'last_output' => 1,
-                'at'          => '0 0 * * *',
-                'next_run'    => '2005-12-30 00:00:00 EST',
-                'event'       => '/cron/session_cleanup'
-            },
-            {
-                'auto_run'    => 1,
-                'at'          => '0 0 * * *',
-                'next_run'    => '2005-12-30 00:00:00 EST',
-                'event'       => '/cron/build_rss'
-            },
-        ]
-
-INTERNAL METHODS
-    The following methods are extended by this plugin.
-
-    dispatch
-        The main scheduling logic takes place during the dispatch phase.
-
-    dump_these
-        On the Catalyst debug screen, all scheduled events are displayed
-        along with the next time they will be executed.
-
-    setup
-
-SEE ALSO
-    crontab(5)
-
-AUTHOR
-    Andy Grundman, <andy at hybridized.org>
-
-COPYRIGHT
-    This program is free software, you can redistribute it and/or modify it
-    under the same terms as Perl itself.
-




More information about the Catalyst-commits mailing list