Обычно при наличии циклической зависимости есть несколько способов её вылечить.<div><br></div><div>Самый распространённый - разделить модуль на два, один с функционалом без зависимости, а другой - оной зависимостью.</div><div>
<br></div><div>Кстати, для почты так и напрашивается два слоя, системный (реализация) и уровня приложения (с логгингом).</div><div><br></div><div>Далее,</div><div>Кстати, в мире Ruby обычно информацию о подключении держат отдельно, в файле database.yml.</div>
<div><br></div><div>Соответственно, просто</div><div>use YAML qw( Load );<br><br></div><div>my $connection_parameters = Load(&quot;${APP_ROOT}/config/database.yml&quot;);</div><div><br></div><div><br><div class="gmail_quote">
19 марта 2010 г. 11:50 пользователь Roman V. Nikolaev <span dir="ltr">&lt;<a href="mailto:rshadow@rambler.ru">rshadow@rambler.ru</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Привет. Помогите осилить сабж. Есть несколько конкретных примеров и не<br>
понятно как нормально сделать:<br>
<br>
Например есть модуль My::Config который берет данные о подключения к БД<br>
из txt файла, а так же через него получают некоторые конфигурационные<br>
параметры из БД (с помощью DBI). Таким образом получается зависимость<br>
что DBI нужен модуль конфига чтобы получить данные о подключении, а<br>
конфигу нужен DBI чтобы далее работать с параметрами хранящимися в БД.<br>
<br>
Или вот второй пример: модулю отсылки почты надо вести логи, и он<br>
подключает соответствующий модуль. И наоборот, модулю работы с логами<br>
надо, например в случае ошибки, отослать письмо.<br>
<br>
Пока что вижу решение в разделение модуля конфига на два модуля. Один<br>
который просто будет считывать файл конфига и отдавать DBI. Другой уже<br>
со всем остальными конфигурационными параметрами и работой с DBI.<br>
<br>
По второму примеру даже не знаю ... везде как-то размазывать<br>
функциональность по разным модулям? Они ведь бывают довольно сложные и<br>
не хотелось бы дублировать кучу кода.<br>
<br>
P.S. Надеюсь понятно объяснил.<br>
<font color="#888888"><br>
--<br>
<br>
         Roman V. Nikolaev<br>
<br>
mail:        <a href="mailto:rshadow@rambler.ru">rshadow@rambler.ru</a><br>
icq:         198-364-657<br>
jabber:      <a href="mailto:rshadow@jabber.org">rshadow@jabber.org</a><br>
site:        <a href="http://www.rshadow.ru" target="_blank">http://www.rshadow.ru</a><br>
<br>
</font><br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>