DBIx-Class-Storage-DBI-mysql-backup
view release on metacpan or search on metacpan
Revision history for DBIx-Class-Storage-DBI-mysql-backup
0.04 2011-02-02 06:00 +09:00
Rewrite sub refs out of `import`
0.03 2011-01-14 19:00 +09:00
Added inc to tarball.
Fixed testfail when mysqld_safe is not in the PATH.
0.02 2011-01-13 11:00 +09:00
Removed `use DateTime`.
inc/Module/Install/Metadata.pm
inc/Module/Install/ReadmeFromPod.pm
inc/Module/Install/Win32.pm
inc/Module/Install/WriteAll.pm
inc/Module/Install/ReadmeMarkdownFromPod.pm
inc/Pod/Markdown.pm
Changes
MANIFEST
Makefile.PL
README
lib/DBIx/Class/Storage/DBI/mysql/backup.pm
t/00_basic.t
t/01_filename.t
t/02_backup.t
t/lib/DBICTest/Schema.pm
t/lib/DBICTest/Schema/Artist.pm
t/lib/DBICTest/Schema/CD.pm
t/var/ignoreme
META.yml
Test::More: 0
Test::mysqld: 0
configure_requires:
ExtUtils::MakeMaker: 6.42
distribution_type: module
generated_by: 'Module::Install version 1.00'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: DBIx-Class-Storage-DBI-mysql-backup
no_index:
directory:
- inc
- t
requires:
DBIx::Class: 0
DBIx::Class::Storage::DBI::mysql: 0
FindBin::libs: 0
MySQL::Backup: 0
Symbol: 0
resources:
license: http://dev.perl.org/licenses/
repository: http://github.com/ngs/p5-dbix-class-storage-dbi-mysql-backup
version: 0.04
Makefile.PL view on Meta::CPAN
use strict;
use warnings;
use inc::Module::Install;
name 'DBIx-Class-Storage-DBI-mysql-backup';
all_from 'lib/DBIx/Class/Storage/DBI/mysql/backup.pm';
readme_from 'lib/DBIx/Class/Storage/DBI/mysql/backup.pm';
readme_markdown_from 'lib/DBIx/Class/Storage/DBI/mysql/backup.pm';
requires 'DBIx::Class';
requires 'DBIx::Class::Storage::DBI::mysql';
requires 'MySQL::Backup';
requires 'FindBin::libs';
requires 'Symbol';
test_requires 'Test::More';
test_requires 'Test::mysqld';
test_requires 'FindBin::libs';
test_requires 'DBIx::Class::Schema::Versioned';
resources( repository => 'http://github.com/ngs/p5-dbix-class-storage-dbi-mysql-backup' );
WriteAll;
NAME
DBIx::Class::Storage::DBI::mysql::backup
SYNOPSIS
package MyApp::Schema;
use base qw/DBIx::Class::Schema/;
our $VERSION = 0.001;
__PACKAGE__->load_classes(qw/CD Book DVD/);
__PACKAGE__->load_components(qw/
Schema::Versioned
Storage::DBI::mysql::backup
/);
DESCRIPTION
Adds "backup" method to DBIx::Class::Storage::DBI::mysql.
This plugin enables "backup" in DBIx::Class::Schema::Versioned when
using MySQL.
FUNCTIONS
backup ( $to_dir )
writes SQL file as "backup_filename" to $to_dir. returns SQL filename.
backup_filename
returns filename of backup *$DB_NAME-YYYYMMDD-hhmmss.sql*
dump
returns dumped SQL
SEE ALSO
* DBIx::Class::Schema::Versioned
* MySQL::Backup
AUTHOR
lib/DBIx/Class/Storage/DBI/mysql/backup.pm view on Meta::CPAN
=encoding utf8
=head1 NAME
DBIx::Class::Storage::DBI::mysql::backup
=head1 SYNOPSIS
package MyApp::Schema;
use base qw/DBIx::Class::Schema/;
our $VERSION = 0.001;
__PACKAGE__->load_classes(qw/CD Book DVD/);
__PACKAGE__->load_components(qw/
Schema::Versioned
Storage::DBI::mysql::backup
/);
=head1 DESCRIPTION
Adds C<backup> method to L<DBIx::Class::Storage::DBI::mysql>.
This plugin enables L<DBIx::Class::Schema::Versioned/backup> when using MySQL.
=head1 FUNCTIONS
=cut
package DBIx::Class::Storage::DBI::mysql::backup;
use strict;
use warnings;
use DBIx::Class::Storage::DBI;
use MySQL::Backup;
use File::Path qw/mkpath/;
use Symbol;
use vars qw( $VERSION );
$VERSION = '0.04';
=head2 backup ( $to_dir )
writes SQL file as L</backup_filename> to $to_dir. returns SQL filename.
=cut
sub _backup {
my ( $self, $dir ) = @_;
mkpath([$dir]) unless -d $dir;
my $filename = $self->backup_filename;
my $fh = Symbol::gensym();
open $fh, ">$dir/$filename";
print $fh $self->dump;
close $fh;
$filename
}
=head2 backup_filename
returns filename of backup I<$DB_NAME-YYYYMMDD-hhmmss.sql>
=cut
sub _backup_filename {
my $self = shift;
my $dsn = $self->_dbi_connect_info->[0];
my $dbname = $1 if($dsn =~ /^dbi:mysql:database=([^;]+)/i);
unless($dbname) {
$dbname = $1 if($dsn =~ /^dbi:mysql:dbname=([^;]+)/i);
}
unless($dbname) {
$dbname = $1 if($dsn =~ /^dbi:mysql:([^;]+)/i);
}
$self->throw_exception("Cannot determine name of mysql database")
lib/DBIx/Class/Storage/DBI/mysql/backup.pm view on Meta::CPAN
=head2 dump
returns dumped SQL
=cut
sub _dump {
my $self = shift;
my $mb = MySQL::Backup->new_from_DBH( $self->dbh ,{'USE_REPLACE' => 1, 'SHOW_TABLE_NAMES' => 1});
$mb->create_structure() . $mb->data_backup()
}
*DBIx::Class::Storage::DBI::dump = \&_dump;
*DBIx::Class::Storage::DBI::backup = \&_backup;
*DBIx::Class::Storage::DBI::backup_filename = \&_backup_filename;
1;
__END__
=head1 SEE ALSO
=over 2
=item *
t/00_basic.t view on Meta::CPAN
use strict;
use warnings;
use FindBin;
use lib "$FindBin::RealBin/../lib";
use Test::More;
use DBIx::Class::Storage::DBI::mysql;
BEGIN { use_ok 'DBIx::Class::Storage::DBI::mysql::backup' }
{
is ref(DBIx::Class::Storage::DBI::mysql->new->can('backup')), 'CODE', 'ref backup is CODE';
is ref(DBIx::Class::Storage::DBI::mysql->new->can('backup_filename')), 'CODE', 'ref backup_filename is CODE';
is ref(DBIx::Class::Storage::DBI::mysql->new->can('dump')), 'CODE', 'ref dump is CODE';
}
done_testing;
t/01_filename.t view on Meta::CPAN
BEGIN {
use_ok 'DBICTest::Schema';
}
{
local $ENV{DBIC_NO_VERSION_CHECK} = 1;
my $re = qr/test\-\d{8}\-\d{6}\.sql/;
my $filename;
$filename = DBICTest::Schema->connect('DBI:mysql:test')->storage->backup_filename;
like
$filename, $re, '$dsn = "DBI:mysql:$database"';
$filename = DBICTest::Schema->connect('DBI:mysql:test','foo','bar')->storage->backup_filename;
like
$filename, $re, '$dsn = "DBI:mysql:$database"';
$filename = DBICTest::Schema->connect('DBI:mysql:database=test;host=127.0.0.1','foo','bar')->storage->backup_filename;
like
$filename, $re, '$dsn = "DBI:mysql:database=$database;host=$hostname"';
$filename = DBICTest::Schema->connect('DBI:mysql:dbname=test;host=127.0.0.1','foo','bar')->storage->backup_filename;
like
$filename, $re, '$dsn = "DBI:mysql:dbname=$database;host=$hostname"';
$filename = DBICTest::Schema->connect('DBI:mysql:dbname=test;host=127.0.0.1;port=1234','foo','bar')->storage->backup_filename;
like
$filename, $re, '$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port"';
}
done_testing;
t/02_backup.t view on Meta::CPAN
artist => $artist,
});
my $dump = $schema->storage->dump;
like $dump, qr/CREATE TABLE `artist`/i, 'has CREATE TABLE `artist`';
like $dump, qr/CREATE TABLE `cd`/i, 'has CREATE TABLE `cd`';
like $dump, qr/'album1'/, 'has album1';
like $dump, qr/'album2'/, 'has album2';
like $dump, qr/'the great artist'/, 'has the great artist';
my $backup_file = $schema->backup;
ok $backup_file, "returned file name $backup_file";
my $dir = $schema->backup_directory;
my $target = "$dir/$backup_file";
ok -f $target, "backup file exists to $target";
my $fh = Symbol::gensym();
open $fh, $target or fail($!);
local $/ = undef;
my $read = <$fh>;
close $fh;
is $read, $dump, 'dumped sql file correctly';
rmtree $dir;
}
t/lib/DBICTest/Schema.pm view on Meta::CPAN
use base qw/DBIx::Class::Schema/;
use FindBin;
our $VERSION = '1.0';
__PACKAGE__->load_namespaces;
__PACKAGE__->load_classes;
__PACKAGE__->load_components(qw/
Schema::Versioned
Storage::DBI::mysql::backup
/);
__PACKAGE__->upgrade_directory("$FindBin::RealBin/var/upgrade");
__PACKAGE__->backup_directory("$FindBin::RealBin/var/backup");
1
( run in 1.484 second using v1.01-cache-2.11-cpan-49f99fa48dc )