On 05/11/10 11:43, Hernan Lopes wrote:
Mike,
also, if you havent already, take a look on Catalyst::Tutorial , in my
opinion its by far the best documentation to begin with catalyst.
http://search.cpan.org/~zarquon/Catalyst-Manual-5.8005/lib/Catalyst/Manual/Tutorial/01_Intro.pod
On 11/5/10, Mike Raynham<[email protected]> wrote:
On 05/11/10 10:10, Octavian Rasnita wrote:
From: "Mike Raynham"<[email protected]>
Hi,
I am fairly new to all things Perl and Catalyst, and would like to
know if what I am attempting to do is correct.
I've recently finished reading 'The Definitive Guide to Catalyst',
which has been very helpful, but I am still a little confused about
separating my business logic from my Catalyst application, and
accessing the database connection from my non-Catalyst application.
At the moment, I have my external class in the lib/MyApp directory. It
uses the connection info found in MyApp::Model::DB, like so:
---
# lib/MyApp/MyExternalClass.pm
MyApp::MyExternalClass
use MyApp::Model::DB;
use MyApp::Schema;
my $connect_info = MyApp::Model::DB->config->{connect_info};
my $schema = MyApp::Schema->connect( $connect_info );
# Do stuff with $schema...
---
That works, and I can connect to the database. However, I have
searched this mailing list, and found this:
http://www.mail-archive.com/[email protected]/msg00817.html
Here, the connection information is moved from MyApp::Model::DB to
MyApp::DB, and then Catalyst::Model::Adaptor is used to glue
MyApp::Model::DB to MyApp::DB. Is it a good idea? MyApp::Model::DB
appears to be part of the Catalyst application, so if I want to access
the database from an external model, it makes sense to me to move the
connection code outside of the Catalyst application.
Regards,
Mike
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'",
],
},
},
The model will access the connection information directly if it is
defined in the config file, and you can use the data from this config
file in any other external program.
You can use the module Config::JFDI for using the Catalyst config file
easier.
Octavian
Hi,
Thanks for the speedy response. When you put it like like, it all seems
so simple and obvious :-)
Config::JFDI looks handy - I'll take a look at that.
Regards,
Mike
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
Hi,
Thanks. That's where I started my venture into Perl and Catalyst, and
it too was very helpful. With this question of separating my model from
the Catalyst app, I had just overlooked the obvious.
Regards,
Mike
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/