2017-07-18 1 views
0

J'ai une application parapluie élixir (A) qui a plusieurs applications en dessous. L'un d'entre eux (B) est défini comme référentiel séparé et contient son propre fichier de configuration (config/config.exs), la plupart du temps avec des valeurs par défaut.Comment faire face à plusieurs fichiers de configuration d'application dans l'application parapluie elixir

Lors de l'ajout de l'application B à A et du démarrage de l'application parapluie, la configuration de l'application B n'est pas chargée. Il semble que j'ai besoin d'inclure explicitement tous les paramètres de configuration pour B dans A config.

Je m'attendrais à ce que la configuration pour l'application B soit toujours disponible dans l'application A et je n'aurais qu'à remplacer certaines valeurs spécifiques.

Quelqu'un pourrait-il m'expliquer comment je peux y parvenir sans spécifier à nouveau tous les paramètres de configuration dans le fichier de configuration de l'application principale (A)?

Répondre

2

Une application parapluie générée avec mix new --umbrella devrait inclure automatiquement les configs de toutes les applications.

En your_project/apps/app_a/mix.exs il doit être configuré pour lire la configuration de la racine de parapluie:

build_path: "../../_build", 
config_path: "../../config/config.exs", 
deps_path: "../../deps", 
lockfile: "../../mix.lock", 

Et your_project/config/config.exs, il devrait inclure toutes les config applications:

use Mix.Config 

# By default, the umbrella project as well as each child 
# application will require this configuration file, ensuring 
# they all use the same configuration. While one could 
# configure all applications here, we prefer to delegate 
# back to each application for organization purposes. 
import_config "../apps/*/config/config.exs" 
+0

merci. Comment cela fonctionnerait-il pour l'application incluse en tant que dépendance au lieu d'être inline dans le répertoire 'apps'? – mkorszun

+1

Ah désolé, pour définir un défaut dans un paquet à utiliser dans un autre, mettez les valeurs dans 'mix.exs', voir https://stackoverflow.com/a/43304305/1650580 –