NAME
Rose::DBx::MoreConfig - Rose::DB base class with extra configuration
options
SYNOPSIS
package My::Data::Source;
use parent 'Rose::DBx::MoreConfig';
... define data sources ...
__PACKAGE__->auto_load_fixups;
...
DESCRIPTION
This package provides a base class for modules defining Rose::DB data
sources. It extends Rose::DB to allow more flexibility in placement of
the YAML configuration file, in order to better accommodate packaged
distributions, shared repositories, and the like.
METHOD
auto_load_fixups
Because it's common to break up data sources for different and
possibly overlapping projects into several classes, it's difficult
to store credentials for each datasource using Rose::DB's default
YAML configuration scheme. It's built around the idea of a single rc
file, but complains if that file includes fixups for data sources
not known when the current class calls "auto_load_fixups". So we
override the Rose::DB default behavior in two ways:
* Warnings for data found in the rc file that apply to a data
source we haven't (yet) seen are suppressed. This allows you to
use a global rc file to supply credentials for several different
classes.
* Several different possibilities are checked, in order, for rc
files:
* /etc/rosedbrc
* A .rosedbrc file in the same directory as Rose/DB.pm
* A .rosedbrc file in your home directory
* A .rosedbrc file in the same directory as the Perl module
for the calling class. (This assumes that the class is
defined in a .pm file with the same name as the class, as is
typical.)
* $ENV{ROSEDBRC}
If more than one of these files are present, they are evaluated
in the order shown, so you can override values from "systemwide"
files with "class-local" files.
Implementation note
One of the goals of the "local .rosedbrc" option provided here is to
facilitate the distribution of Rose::DB-derived classes for a particular
set of databases as packages or in an application's local library tree.
However, for the same reasons that you want the content in your
.rosedbrc separate from the rest of your module, you will likely not
want to store a .rosedbrc with user credentials in a SCM repository that
is visible by others. Depending on your SCM system, you may be able to
exclude this file via an "ignore me" configuration directive (e.g. a
.gitignore file or "svn:ignore" property). Othewise, you will need to
keep these files outside the development tree and include them when you
build or deploy your distribution.
EXPORT
None.
DIAGNOSTICS
Any message that can be returned by an included package. Warnings
generated by Rose::DB about unrecognized data sources encountered in a
configuration file are suppressed.
BUGS AND CAVEATS
Are there, for certain, but have yet to be cataloged. Please don't
hesitate to report any you find, using either CPAN or GitHub.
SEE ALSO
Rose::DB
VERSION
version 1.01
REVISION
$Revision$ $Date$
AUTHOR
Charles Bailey <
[email protected]>
COPYRIGHT AND LICENSE
Copyright (C) 2015 by Charles Bailey
This software may be used under the terms of the Artistic License or the
GNU General Public License, as the user prefers.
ACKNOWLEDGMENT
The code incorporated into this package was originally written with
United States federal funding as part of research work done by the
author at the Children's Hospital of Philadelphia.