Обычно при наличии циклической зависимости есть несколько способов её
вылечить.
Самый распространённый - разделить модуль на два, один с функционалом без
зависимости, а другой - оной зависимостью.
Кстати, для почты так и напрашивается два слоя, системный (реализация) и
уровня приложения (с логгингом).
Далее,
Кстати, в мире Ruby обычно информацию о подключении держат отдельно, в файле
database.yml.
Соответственно, просто
use YAML qw( Load );
my $connection_parameters = Load("${APP_ROOT}/config/database.yml");
19 марта 2010 г. 11:50 пользователь Roman V. Nikolaev
<[email protected]>написал:
> Привет. Помогите осилить сабж. Есть несколько конкретных примеров и не
> понятно как нормально сделать:
>
> Например есть модуль My::Config который берет данные о подключения к БД
> из txt файла, а так же через него получают некоторые конфигурационные
> параметры из БД (с помощью DBI). Таким образом получается зависимость
> что DBI нужен модуль конфига чтобы получить данные о подключении, а
> конфигу нужен DBI чтобы далее работать с параметрами хранящимися в БД.
>
> Или вот второй пример: модулю отсылки почты надо вести логи, и он
> подключает соответствующий модуль. И наоборот, модулю работы с логами
> надо, например в случае ошибки, отослать письмо.
>
> Пока что вижу решение в разделение модуля конфига на два модуля. Один
> который просто будет считывать файл конфига и отдавать DBI. Другой уже
> со всем остальными конфигурационными параметрами и работой с DBI.
>
> По второму примеру даже не знаю ... везде как-то размазывать
> функциональность по разным модулям? Они ведь бывают довольно сложные и
> не хотелось бы дублировать кучу кода.
>
> P.S. Надеюсь понятно объяснил.
>
> --
>
> Roman V. Nikolaev
>
> mail: [email protected]
> icq: 198-364-657
> jabber: [email protected]
> site: http://www.rshadow.ru
>
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
>
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org