DBIx-TempDB
view release on metacpan or search on metacpan
NAME
DBIx::TempDB - Create a temporary database
VERSION
0.14
SYNOPSIS
use Test::More;
use DBIx::TempDB;
use DBI;
# provide credentials with environment variables
plan skip_all => 'TEST_PG_DSN=postgresql://postgres@localhost' unless $ENV{TEST_PG_DSN};
# create a temp database
my $tmpdb = DBIx::TempDB->new($ENV{TEST_PG_DSN});
# print complete url to db server with database name
diag $tmpdb->url;
# useful for reading in fixtures
$tmpdb->execute("create table users (name text)");
$tmpdb->execute_file("path/to/file.sql");
# connect to the temp database
my $db = DBI->connect($tmpdb->dsn);
# run tests...
done_testing;
# database is cleaned up when test exit
DESCRIPTION
DBIx::TempDB is a module which allows you to create a temporary
database, which only lives as long as your process is alive. This can be
very convenient when you want to run tests in parallel, without messing
up the state between tests.
This module currently support PostgreSQL, MySQL and SQLite by installing
the optional DBD::Pg, DBD::mysql and/or DBD::SQLite modules.
Please create an issue <https://github.com/jhthorsen/dbix-tempdb/issues>
or pull request for more backend support.
CAVEAT
Creating a database is easy, but making sure it gets clean up when your
process exit is a totally different ball game. This means that
DBIx::TempDB might fill up your server with random databases, unless you
choose the right "drop strategy". Have a look at the "drop_from_child"
parameter you can give to "new" and test the different values and select
the one that works for you.
ENVIRONMENT VARIABLES
DBIX_TEMP_DB_KEEP_DATABASE
Setting this variable will disable the core feature in this module: A
unique database will be created, but it will not get dropped/deleted.
DBIX_TEMP_DB_URL
This variable is set by "create_database" and contains the complete URL
pointing to the temporary database.
Note that calling "create_database" on different instances of
DBIx::TempDB will overwrite "DBIX_TEMP_DB_URL".
METHODS
create_database
$self = $self->create_database;
This method will create a temp database for the current process. Calling
this method multiple times will simply do nothing. This method is
normally automatically called by "new".
( run in 0.883 second using v1.01-cache-2.11-cpan-5837b0d9d2c )