[Moscow.pm] Rose::DB::Oject::Manager

Павел pavel на kuptsov.info
Вт Мар 27 23:32:05 PDT 2012


Всем привет!
Продолжая ковырять розу, столкнулся с необходимостью динамически  
передавать параметры для подключения к БД.
При этом надо было это делать в связке с плагином Config для  
Mojolicious::Lite

my $cfg = plugin 'Config' => {file => 'app.conf'};

Я к сожалению так и не смог осилить некоторые советы по использованию  
модулей для этого (но тем не менее спасибо за информацию  Гнатыне  
Александру)
Перекопал половину гугла, но так же не нашел ответа, поэтому дошел до  
своего варианта долгим ковырянием кода "розы".

Передавать параметры для подключения динамически смог вот так вот (не знаю  
насколько это тру-вей, прокомментируйте гуру):

Итак, имеем хэш с конфигурацией (хэш, как вариант получаем с помощью  
плагина Config)

my %CFG = (username => 'web',
            password => 'web',
            driver => 'mysql',
            dsn => 'dbi:mysql:dbname=web;host=qiwi.host.ru',
            connect_options => { AutoCommit => 1, ChopBlanks => 1 ,  
mysql_enable_utf8 => 1});

Затем в основном скрипте делаем так:

Rugosa::DB->registry->add_entry(%CFG);

где Rugosa::DB модуль такого вида:

package Rugosa::DB;

use base qw/Rose::DB/;
##
Rugosa::DB->use_private_registry;

Rugosa::DB->register_db
(
   driver          => 'fake',
   dsn             => 'dbi:fake:dbname=fake;host=fake',
   password        => 'fake',
   username        => 'fake',
);

P.S.
Если в конфиге помимо подключения к БД еще что-то, то лучше выделить ветвь  
конфига примерно так:
my $cfg = plugin 'Config' => {file => 'app.conf'};
Rugosa::DB->registry->add_entry(%{$cfg->{db}});

где раздел db - соответственно, представляет из себя хэш подобный %CFG.


Подробная информация о списке рассылки Moscow-pm