From: Luke Saunders Date: Mon, 30 Jun 2008 18:38:08 +0000 (+0000) Subject: added ignore_version connect attr and updated docs accordingly X-Git-Tag: v0.08240~415 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f81b9157d27ced5e5a91c0f78e720da4cbe7d923;p=dbsrgits%2FDBIx-Class.git added ignore_version connect attr and updated docs accordingly --- diff --git a/lib/DBIx/Class/Schema/Versioned.pm b/lib/DBIx/Class/Schema/Versioned.pm index e790a92..d0cb53e 100644 --- a/lib/DBIx/Class/Schema/Versioned.pm +++ b/lib/DBIx/Class/Schema/Versioned.pm @@ -190,6 +190,8 @@ database type. 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 @@ warns if they are not the same or if the DB is unversioned. It also provides 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 @@ sub _on_connect $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(); diff --git a/t/94versioning.t b/t/94versioning.t index 3324745..1846f6b 100644 --- a/t/94versioning.t +++ b/t/94versioning.t @@ -83,3 +83,24 @@ eval "use DBICVersionNew"; 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 +}