Allow user to specify version of schema to install
Arthur Axel 'fREW' Schmidt [Sat, 3 Mar 2012 19:31:02 +0000 (13:31 -0600)]
Changes
lib/DBIx/Class/DeploymentHandler/Dad.pm
t/02-instantiation-wo-component.t
t/03-deprecated.t

diff --git a/Changes b/Changes
index 9608cb7..1d1920a 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 Revision history for {{$dist->name}}
 
 {{$NEXT}}
+       - Allow user to specify version of schema to install
        - Added better sandboxing (stolen straight from Plack::Util) for coderefs
          to avoid accidental leakage
        - Sandboxing also makes $0 and thus FindBin et al work in perl scripts
index af14267..569a9f7 100644 (file)
@@ -42,11 +42,13 @@ sub _build_schema_version { $_[0]->schema->schema_version }
 
 sub install {
   my $self = shift;
-  log_info { 'installing version ' . $self->to_version };
+
+  my $version = (shift @_ || {})->{version} || $self->to_version;
+  log_info { "installing version $version" };
   croak 'Install not possible as versions table already exists in database'
     if $self->version_storage_is_installed;
 
-  my $ddl = $self->deploy({version=>$self->to_version});
+  my $ddl = $self->deploy({ version=> $version });
 
   $self->add_database_version({
     version     => $self->to_version,
@@ -126,8 +128,12 @@ The version (defaults to schema's version) to migrate the database to
 
  $dh->install
 
-Deploys the current schema into the database.  Populates C<version_storage> with
-C<version> and C<ddl>.
+or
+
+ $dh->install({ version => 1 })
+
+Deploys the requested version into the database  Version defaults to
+L</schema_version>.  Populates C<version_storage> with C<version> and C<ddl>.
 
 B<Note>: you typically need to call C<< $dh->prepare_deploy >> before you call
 this method.
index fbf5723..b5fee69 100644 (file)
@@ -40,7 +40,7 @@ VERSION1: {
       bar => 'frew',
     })
   } 'schema not deployed';
-  $handler->install;
+  $handler->install({ version => 1 });
   dies_ok {
     $handler->install;
   } 'cannot install twice';
index f29244a..49e1ef5 100644 (file)
@@ -39,7 +39,7 @@ VERSION1: {
       bar => 'frew',
     })
   } 'schema not deployed';
-  $handler->install;
+  $handler->install({ version => '1.0' });
   dies_ok {
     $handler->install;
   } 'cannot install twice';