2016-08-22 7 views
7

У меня есть приложение, которое предназначено для нескольких баз данных, это как приложение, которое наблюдает за приложениями, которые делают отчеты, оповещают о оповещениях, запускают задачи и вещи, таким образом, что невозможно контролировать статически (в файле конфигурации), поэтому я подумал, что это можно сделать, начиная супервизор, который контролирует несколько Repo s, просто меняя его настройки в opts (я думал в пуле репозиториев, что-то вроде этого, звучит сумасшедшим, я знаю), но это невозможно, так как Ecto.Repo имеет макрос, который связывает соединение с модулем Repo, так что есть способ переписать Ecto.Repo таким образом, чтобы я мог удовлетворить свои потребности? Я посмотрел на источники ecto, но я не нашел решения в одиночку.Несколько баз данных в Ecto

Я также посмотрел на this post, но есть вероятность того, что приложение будет предназначаться несколько экземпляров с разными пользователями, различными учетными данными и т.д.

Я достиг некоторых решений с использованием Code.eval для создания Repos на в- но я не знаю, как это "хорошо", и если это поощряется.

ответ

0

В случае, если вы знаете все репозитории, необходимые для доступа я предлагаю разделив применение в более зонтичных приложений. Каждое приложение зонтика может подключаться к другому репозиторию ecto.

Как хорошая практика, я всегда извлекаю Ecto и код, связанный с базой данных, для разделения зонтичных приложений, разделенных доменами. В этом демонстрационном приложении можно увидеть один пример: https://github.com/silviurosu/elixir-umbrella-ddd.

Смежные вопросы