NAME

DBIx::Connect::FromConfig - Creates a DB connection from a configuration file

VERSION

Version 0.07

SYNOPSIS

use DBI;
use DBIx::Connect::FromConfig -in_dbi;

my $dbh = DBI->connect_from_config(config => $config);
# do DBI stuff

or, if you don't want to pollute DBI namespace:

use DBI;
use DBIx::Connect::FromConfig;

my $dbh = DBIx::Connect::FromConfig->connect(config => $config);
# do DBI stuff

DESCRIPTION

DBIx::Connect::FromConfig provides a generic way to connect to a database using settings from a configuration object.

EXPORT

This module does not export any function, but if given the -in_dbi import option, it will install an alias of the connect() function in the DBI namespace, thus allowing it to be called as a method of DBI (see the synopsis).

FUNCTIONS

connect()

Try to connect to a database using DBI and return the corresponding object.

Settings

  • driver - the name of the DBI driver for the database. This parameter is mandatory.

  • database the name of the database. This parameter is mandatory.

  • host - the hostname of the database. May be empty.

  • port - the port of the database. May be empty.

  • options - DBD options, given as a plain string. Will be appended at the end of the constructed DSN.

  • username - the user name used to connect to the database. Defaults to the current user.

  • password - the password used to connect to the database. May be empty.

  • attributes - DBI attributes, like RaiseError or AutoCommit.

Parameters

  • config - expects something that contains the settings:

    • a hash reference with the settings stored as first-level keys.

    • a Config::IniFiles object; the settings must be available from the section named as given by the section parameter.

    • a Config::Simple object; the settings must be available from the section named as given by the section parameter.

    • a Config::Tiny object; the settings must be available from the section named as given by the section parameter.

  • section - name of the section to look for the database settings; defaults to "database"

Examples

Connect to a database, passing the settings in a plain hash reference:

my %settings = (
    driver      => 'Pg', 
    host        => 'bigapp-db.society.com', 
    database    => 'bigapp', 
    username    => 'appuser', 
    password    => 'sekr3t', 
    attributes  => { AutoCommit => 1, RaiseError => 1 },
);

my $dbh = DBI->connect_from_config(config => \%settings);

Connect to a database, passing the settings from a configuration file:

my $config = Config::IniFiles->new(-file => '/etc/hebex/mail.conf');
my $dbh = DBI->connect_from_config(config => $config);

where the configuration file could look like:

[database]
driver      = Pg
host        = bigapp-db.society.com
database    = bigapp
username    = appuser
password    = sekr3t
attributes  = AutoCommit=1,RaiseError=1

DIAGNOSTICS

Database driver not specified

(E) The setting specifying the database driver was not found or was empty.

Database driver %s not supported

(E) The specified database driver is not supported by this module.

DBI attributes must be given as a hashref or a string

(E) The function was given an improper value for the DBI attributes.

No parameter given

(E) The function can't do anything if you don't give it the required arguments.

Odd number of arguments

(E) The function expects options as a hash. Getting this message means something's missing.

Unknown type of configuration

(E) The function doesn't know how to handle the type of configuration you gave it. Use a supported one, bug the author, or send a patch ;-)

AUTHOR

Sébastien Aperghis-Tramoni, <sebastien at aperghis.net>

BUGS

Please report any bugs or feature requests to bug-dbix-connect-fromconfig at rt.cpan.org, or through the web interface at http://rt.cpan.org/Public/Dist/Display.html?Name=DBIx-Connect-FromConfig. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc DBIx::Connect::FromConfig

You can also look for information at:

COPYRIGHT & LICENSE

Copyright 2008-2012 Sébastien Aperghis-Tramoni, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.