2016-08-22 40 views
7

Mam aplikację, która kieruje się do wielu baz danych, jest to jak aplikacja, która ogląda aplikacje, które generują raporty, pośredniczą w powiadomieniach, uruchamiają zadania i pliki, w sposób niemożliwy do kontrolowania statycznie (w pliku konfiguracyjnym), więc pomyślałem, że można to zrobić, zaczynając od nadzorcy, który nadzoruje wiele Repo właśnie zmieniając swoje ustawienia w opts (myślałem w puli repo, coś w tym stylu, brzmi szalenie, wiem), ale to niemożliwe, ponieważ Ecto.Repo ma makro, które powoduje, że połączenie jest powiązane z modułem Repo, więc istnieje sposób na przepisanie Ecto.Repo w sposób, który może spełnić moje potrzeby? Spojrzałem na źródła ecto, ale nie znalazłem żadnego rozwiązania, które byłoby samo w sobie.Wiele baz danych w Ecto

ja również spojrzał na this post, ale istnieje możliwość, że wniosek będzie skierowany wiele wystąpień, z różnymi użytkownikami różnych poświadczeń itp

Mam osiągnął pewne rozwiązania wykorzystujące Code.eval do tworzenia Repos na przeprowadzenie latać, ale nie wiem, jak to jest "dobre", a jeśli to zachęca.

Odpowiedz

0

W przypadku znasz wszystkie repozytoria musisz dostęp Proponuję podział zastosowanie w coraz większej liczbie aplikacji parasolowych. Każda aplikacja parasolowa może łączyć się z innym repozytorium ekto.

Jako dobrą praktykę zawsze wyodrębniam kod związany z Ecto i bazą danych w celu oddzielenia aplikacji parasolowych oddzielonych domenami. Możesz zobaczyć jeden przykład w tej aplikacji demo: https://github.com/silviurosu/elixir-umbrella-ddd.