[Catalyst] Accessing DB from external model

Octavian Rasnita orasnita at gmail.com
Fri Nov 5 19:53:36 GMT 2010


From: "Darren Duncan" <darren at darrenduncan.net>
> For any configuration details that might vary either per application or per 
> deployment, make these user-configurable parameters of MyDBLib, with then each 
> of your applications would supply arguments to it when instantiating a MyDBLib 
> object; in the Catalyst app's case, said arguments would be in your Catalyst app 
> config file as is normal for MyApp::Model::DB.
> 
> For any configuration details that are unlikely to vary per application or per 
> deployment, especially if they are details for which your actual code would 
> vary, then put these directly in your MyDBLib code instead.


Yes you are right.

> Octavian Rasnita wrote:
>> The best idea would be to put the connection information in the application's config file like in the example below. (This example uses a Perl data structure, but you can use any configuration type accepted by Config::Any).
>> 
>> 'Model::DB' => {
>>  schema_class => 'MyApp::Schema',
>>  connect_info => {
>>    dsn => 'dbi:Oracle:host=10.10.10.10;port=1521;sid=ora8',
>>    user => 'user',
>>    password => "password",
>>    #name_sep => '.',
>>    LongReadLen => 100*1024*1024,
>>    LongTruncOk => 1,
>>    on_connect_call => 'datetime_setup',
>>    on_connect_do => [
>>      "alter session set NLS_COMP='LINGUISTIC'",
>>      "alter session set NLS_SORT='BINARY_AI'",
>>    ],
>>  },
>> },
>> 
[snip]

> Now some of this looks wrong to me; a lot of those details should be in your 
> MyDBLib code instead of the config file.  Your config file should instead look 
> more like this:
> 
> 'Model::DB' => {
>  schema_class => 'MyApp::Schema',
>  connect_info => {
>    host => '10.10.10.10',
>    port => 1521,
>    user => 'user',
>    password => "password",
>  },
> },
> 
> These are more details that a non-programmer user would set.


I agree and yes, that sample code could give bad ideas.
In my case I am the app designer, coder, maintainer, site admin, everything but the web designer and I've done it so for not specifying these settings in more places.

Is there another place where I could put these settings for a certain DBIC schema?
For example, can I put them in the MyApp/Schema.pm, orsomewhere else? Can you give an example?

Thanks.

Octavian




More information about the Catalyst mailing list