logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

CGI::Application::Plugin::AutoRunmode::FileDelegate - delegate CGI::App run modes to a directory of files

Author

       Thilo Planz, <thilo@cpan.org>

Bugs

       With all the namespace nesting going on the name of this module has reached an intolerable Java-esque
       length.

Description

       Using this module, you can place the definition of your run modes for a CGI::Application into directory
       of files (as opposed to into a Perl module).

       Each run mode is contained in its own file, named foo.pl for a run mode called foo.  The run modes are
       lazily evaluated (on demand) for each request.  In the case of mod_perl this means you can update them
       without restarting your web server. In the case of plain CGI it means a reduced startup cost if you have
       many run modes (because only the one that you need gets parsed and loaded, along with dependent modules).

   Usingmorethanonedirectorywithrunmodes
       You can pass multiple directory paths to the constructor for the delegate:

               my $delegate = new CGI::Application::Plugin::AutoRunmode::FileDelegate
                               ('/path/to/runmodes', '/path/to/more_runmodes')

       In this case, they will be searched in order. The first matching file becomes the run mode. In the case
       of errors with that file, the module will croak (and not continue the search in the remaining
       directories).

Name

       CGI::Application::Plugin::AutoRunmode::FileDelegate - delegate CGI::App run modes to a directory of files

See Also

       If you like the idea of moving everything outside of Perl modules into separate files, you should also
       have a look at CGI::Application::Plugin::TemplateRunner, which does a similar thing for HTML templates
       and the Perl code needed to provide them with data.

Synopsis

               # in file runmodes/my_run_mode.pl
                       sub  {
                               my ($app, $delegate) = @_;
                                       # do something here
                       };

               # in file runmodes/another_run_mode.pl
                       sub {
                                       # do something else
                       };

               package MyApp;
               use base 'CGI::Application';
               use CGI::Application::Plugin::AutoRunmode
                       qw [ cgiapp_prerun];
               use CGI::Application::Plugin::AutoRunmode::FileDelegate();

                       sub setup{
                               my ($self) = @_;
                               my $delegate = new CGI::Application::Plugin::AutoRunmode::FileDelegate
                                               ('/path/to/runmodes')
                               $self->param('::Plugin::AutoRunmode::delegate' => $delegate);
                       }

                # you now have two run modes
                # "my_run_mode" and "another_run_mode"

See Also