Rose::DBx::MoreConfig - Rose::DB base class with extra configuration options
package My::Data::Source;
use parent 'Rose::DBx::MoreConfig';
... define data sources ...
__PACKAGE__->auto_load_fixups;
...
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.
-
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
.rosedbrcfile in the same directory asRose/DB.pm - A
.rosedbrcfile in your home directory - A
.rosedbrcfile in the same directory as the Perl module for the calling class. (This assumes that the class is defined in a.pmfile 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.
-
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.
None.
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.
Are there, for certain, but have yet to be cataloged. Please don't hesitate to report any you find, using either CPAN or GitHub.
version 1.01
Charles Bailey cbail@cpan.org
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.
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.