rename and document preinstall
Arthur Axel 'fREW' Schmidt [Sun, 9 May 2010 05:58:48 +0000 (00:58 -0500)]
lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm
lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm
t/deploy_methods/sql_translator.t

index 84340c5..c56243b 100644 (file)
@@ -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<preinstall> 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
index adc2693..089eda1 100644 (file)
@@ -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
index ad95bab..c7d03e0 100644 (file)
@@ -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';