[Bast-commits] r4543 - in DBIx-Class/0.08/trunk: lib/DBIx/Class/Schema t

lukes at dev.catalyst.perl.org lukes at dev.catalyst.perl.org
Mon Jun 30 19:38:08 BST 2008


Author: lukes
Date: 2008-06-30 19:38:08 +0100 (Mon, 30 Jun 2008)
New Revision: 4543

Modified:
   DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm
   DBIx-Class/0.08/trunk/t/94versioning.t
Log:
added ignore_version connect attr and updated docs accordingly

Modified: DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm
===================================================================
--- DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm	2008-06-30 14:36:37 UTC (rev 4542)
+++ DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm	2008-06-30 18:38:08 UTC (rev 4543)
@@ -190,6 +190,8 @@
 
 This method should return the name of the backup file, if appropriate..
 
+This method is disabled by default. Set $schema->do_backup(1) to enable it.
+
 =cut
 
 sub backup
@@ -402,21 +404,29 @@
 compatibility between the old versions table (SchemaVersions) and the new one
 (dbix_class_schema_versions).
 
-To avoid the checks on connect, set the env var DBIC_NO_VERSION_CHECK. This can be
-useful for scripts.
+To avoid the checks on connect, set the env var DBIC_NO_VERSION_CHECK or alternatively you can set the ignore_version attr in the forth arg like so:
 
+  my $schema = MyApp::Schema->connect(
+    $dsn,
+    $user,
+    $password,
+    { ignore_version => 1 },
+  );
+
 =cut
 
 sub connection {
   my $self = shift;
   $self->next::method(@_);
-  $self->_on_connect;
+  $self->_on_connect($_[3]);
   return $self;
 }
 
 sub _on_connect
 {
-  my ($self) = @_;
+  my ($self, $args) = @_;
+
+  $args = {} unless $args;
   $self->{vschema} = DBIx::Class::Version->connect(@{$self->storage->connect_info()});
   my $vtable = $self->{vschema}->resultset('Table');
 
@@ -430,9 +440,9 @@
       $self->storage->dbh->do("DROP TABLE " . $vtable_compat->result_source->from);
     }
   }
-  
+
   # useful when connecting from scripts etc
-  return if ($ENV{DBIC_NO_VERSION_CHECK});
+  return if ($args->{ignore_version} || ($ENV{DBIC_NO_VERSION_CHECK} && !exists $args->{ignore_version}));
   
   my $pversion = $self->get_db_version();
 

Modified: DBIx-Class/0.08/trunk/t/94versioning.t
===================================================================
--- DBIx-Class/0.08/trunk/t/94versioning.t	2008-06-30 14:36:37 UTC (rev 4542)
+++ DBIx-Class/0.08/trunk/t/94versioning.t	2008-06-30 18:38:08 UTC (rev 4543)
@@ -83,3 +83,24 @@
   ok($@, 'old version table gone');
 
 }
+
+# check behaviour of DBIC_NO_VERSION_CHECK env var and ignore_version connect attr
+{
+  my $schema_version = DBICVersion::Schema->connect($dsn, $user, $pass);
+  eval {
+    $schema_version->storage->dbh->do("DROP TABLE IF EXISTS $version_table_name");
+  };
+
+  $schema_version = DBICVersion::Schema->connect($dsn, $user, $pass);
+  # should warn
+
+  $schema_version = DBICVersion::Schema->connect($dsn, $user, $pass, { ignore_version => 1 });
+  # should not warn
+
+  $ENV{DBIC_NO_VERSION_CHECK} = 1;
+  $schema_version = DBICVersion::Schema->connect($dsn, $user, $pass);
+  # should not warn
+
+  $schema_version = DBICVersion::Schema->connect($dsn, $user, $pass, { ignore_version => 0 });
+  # should warn
+}




More information about the Bast-commits mailing list