From: Arthur Axel 'fREW' Schmidt Date: Sun, 9 May 2010 05:58:48 +0000 (-0500) Subject: rename and document preinstall X-Git-Tag: v0.001000_09~11 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class-DeploymentHandler.git;a=commitdiff_plain;h=80ff6f6de5995403431369d67fc2e441c134a4b4 rename and document preinstall --- diff --git a/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm b/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm index 84340c5..c56243b 100644 --- a/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm +++ b/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm @@ -203,7 +203,7 @@ sub deploy { )); } -sub preinstall_scripts { +sub preinstall { my $self = shift; my $version = shift || $self->schema_version; @@ -525,6 +525,10 @@ like the best way to describe the layout is with the following example: |- down | `- 2-1 | `- 001-auto.sql + |- preinstall + | `- 1 + | |- 001-create_database.pl + | `- 002-create_users_and_permissions.pl |- schema | `- 1 | `- 001-auto.sql @@ -551,6 +555,13 @@ independent. C<_generic> exists for when you for some reason are sure that your SQL is generic enough to run on all databases. Good luck with that one. +Note that unlike most steps in the process, C will not run SQL, as +there may not even be an database at preinstall time. It will run perl scripts +just like the other steps in the process, but nothing is passed to them. +Until people have used this more it will remain freeform, but a recommended use +of preinstall is to have it prompt for username and password, and then call the +appropriate C<< CREATE DATABASE >> commands etc. + =head1 PERL SCRIPTS A perl script for this tool is very simple. It merely needs to contain an diff --git a/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm b/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm index adc2693..089eda1 100644 --- a/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm +++ b/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm @@ -3,7 +3,7 @@ use Moose::Role; # ABSTRACT: Interface for deploy methods -requires 'preinstall_scripts'; +requires 'preinstall'; requires 'prepare_deploy'; requires 'deploy'; @@ -23,6 +23,12 @@ requires 'downgrade_single_step'; __END__ +=method preinstall + + $dh->preinstall + +Run scripts before deploying to the database + =method prepare_deploy $dh->prepare_deploy diff --git a/t/deploy_methods/sql_translator.t b/t/deploy_methods/sql_translator.t index ad95bab..c7d03e0 100644 --- a/t/deploy_methods/sql_translator.t +++ b/t/deploy_methods/sql_translator.t @@ -34,7 +34,7 @@ VERSION1: { catfile(qw( t sql SQLite preinstall 1.0 003-semiautomatic.pl )); print {$prerun} "sub {use File::Touch; touch(q(foobar));}"; close $prerun; - $dm->preinstall_scripts('1.0'); + $dm->preinstall('1.0'); ok -e 'foobar';