2016-05-17 9 views
3

Nach dem setup instructions habe ich die folgende Ecto-Konfiguration in meiner config/config.exs Datei:Wie konfiguriere ich Ecto zur Laufzeit?

config :my_app, MyApp.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    url: "postgresql://[email protected]/myrepo", 
    size: 20 

Wenn mein Verständnis richtig ist, die config.exs zur Compile-Zeit ausgewertet wird.

Gibt es eine Möglichkeit, diesen Konfigurationsschritt zur Laufzeit auszuführen?

Dies ist für eine App, die als kompilierte Binärdatei (über exrm) verteilt wird. Der Endanwender sollte in der Lage sein, die Datenbank-URL und Poolgröße über Flaggen oder Umgebungsvariablen anpassen, nicht bearbeite sys.config

Antwort

7

Laden aus dem System möglich ist, durch die Verwendung {:system, "KEY" } zB:

config :my_app Repo 
    url: {:system, "DATABASE_URL" }, 
    size: {:system, "DATABASE_POOL_SIZE" } 

statt

config :my_app, Repo, 
    url: "ecto://postgres:[email protected]/ecto_simple", 
    size: 20 

In diesem Fall richten Sie Ecto ein, um die Systemeigenschaften zu verwenden. Natürlich muss ein Benutzer es konfigurieren.