[Dbix-class] Configuration query - Catalyst::Model::DBIC::Schema
Dermot
paikkos at googlemail.com
Tue Jul 29 09:15:42 BST 2008
2008/7/28 Matt S Trout <dbix-class at trout.me.uk>:
> On Mon, Jul 28, 2008 at 02:02:04PM +0100, Peter Flanigan wrote:
>> Dermot wrote:
>> >I don't want to hard-code the path to the SQLite file but unless I do
>> >I am getting DBI Connection failed: unable to open database file(1)
>> >after a login attempt.
>>
>> package YourApp::Model::YourModel;
>>
>> use base qw(Catalyst::Model::DBIC::Schema);
>>
>> __PACKAGE__->config( connect_info => [], schema_class => undef );
>>
I don't want to stray off the topic. I used
<connect_info>
driver dbi:SQLite
file __HOME__/motion.db
</connect_info>
in my conf file to get around a problem with an import script I made
in ~/script/
I needed to s/__HOME__/$HOME/ to allow the script to populate the
SQLite db. This script would be run periodically so it needs to work
in conjunction with everything else.
Admittedly I am sure there is a better way that my effort (see below).
At the very least I could do substitution on the whole string.
...
use FindBin qw($Bin);
use Path::Class;
use lib dir ($Bin,'..','lib')->stringify;
use Config::General;
...
my $config = new Config::General(-ConfigFile => 'MyApp.conf',
-ConfigPath=> \$path, -BackslashEscape => 1);
my %config = $config->getall;
print Dumper $config,"\n";
my $dbfile = $config{'model::MyAppDB'}{'connect_info'}{'file'};
my $HOME = dir($Bin, '..');
$dbfile =~ s/__HOME__/$HOME/;
my $dsn = $config{'Model::DBIC'}{'connect_info'}{'driver'}.':'.$dbfile;
To throw more tinder onto the fire, I am struggling to get Charlie's
solution to work. Charlie's solution was were I started from. The book
had it the same way but in YAML format. I tried
<Model::MyAppDB>
connect_info dbi:SQLite:__HOME__/motion.db
</Model::MyAppDB>
But when I startup the App I get the error:
Couldn't instantiate component "MyApp::Model::MyAppDB", "Can't use string...
It will however start with
<model::MyAppDB>
...
Which I find strange.
Thanx,
Dp.
More information about the DBIx-Class
mailing list