From: Alexander Hartmaier Date: Wed, 17 Mar 2010 16:17:59 +0000 (+0000) Subject: added DATABASE CONFIG SWITCHING USING MULTIPLE CONFIG FILES section X-Git-Tag: v5.8005~18 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=commitdiff_plain;h=6c0a745efa9798edf8e9ac231027bfc997485054;hp=30fc2cda072dd38b73bd9ceb18d2468644f0b4cc added DATABASE CONFIG SWITCHING USING MULTIPLE CONFIG FILES section --- diff --git a/lib/Catalyst/Manual/Tutorial/08_Testing.pod b/lib/Catalyst/Manual/Tutorial/08_Testing.pod index e0e629c..b555c22 100644 --- a/lib/Catalyst/Manual/Tutorial/08_Testing.pod +++ b/lib/Catalyst/Manual/Tutorial/08_Testing.pod @@ -349,7 +349,11 @@ maintain both a "production database" for your live application and a "testing database" for your test cases. One advantage to L is that it runs your full application; however, this can complicate things when -you want to support multiple databases. One solution is to allow the +you want to support multiple databases. + +=head2 DATABASE CONFIG SWITCHING IN YOUR MODEL CLASS + +One solution is to allow the database specification to be overridden with an environment variable. For example, open C in your editor and change the C<__PACKAGE__-Econfig(...> declaration to resemble: @@ -376,6 +380,50 @@ launch your normal application without the C environment variable defined, it will default to the same C as before. +=head2 DATABASE CONFIG SWITCHING USING MULTIPLE CONFIG FILES + +By utilizing Ls functionality for loading +multiple config files based on environment variables you can override your +default (production) database connection settings. + +Setting C<$ENV{ MYAPP_CONFIG_LOCAL_SUFFIX }> to 'testing' in your test script +results in loading of an additional config file named myapp_testing.conf after +myapp.conf which will override any parameters in myapp.conf. + +You should set the environment variable in the BEGIN block of your test script +to make sure it's set before your Catalyst application is started. + +The following is an example for a config and test script for a DBIx::Class +model named MyDB and a controller named Foo: + +myapp_testing.conf: + + + + dsn dbi:SQLite:myapp.db + + + + +t/controller_Foo.t: + + use strict; + use warnings; + use Test::More; + + BEGIN { + $ENV{ MYAPP_CONFIG_LOCAL_SUFFIX } = 'testing'; + } + + eval "use Test::WWW::Mechanize::Catalyst 'MyApp'"; + plan $@ + ? ( skip_all => 'Test::WWW::Mechanize::Catalyst required' ) + : ( tests => 2 ); + + ok( my $mech = Test::WWW::Mechanize::Catalyst->new, 'Created mech object' ); + + $mech->get_ok( 'http://localhost/foo' ); + =head1 AUTHOR