3 votes

Comment lancer plusieurs applications à partir de mix.exs ?

J'ai une application Elixir avec deux applications dans le dossier lib/ :

myproject/lib/app1 myproject/lib/app2

Ils ont tous deux des fichiers qui utilisent Application :

myproject/lib/app1.exs myproject/lib/app2.exs

Ils mettent chacun en œuvre start et créer un arbre de supervision.

Sur myproject/mix.exs J'ai essayé :

  def application do
    [
      mod: {app1, []},
           {app2, []},
      applications: [:foo, :bar]
    ]
  end

Mais tout ce que j'obtiens sont des erreurs de syntaxe sur la ligne avec {app2, []} .

Est-ce qu'une telle chose est possible ? Si ce n'est pas le cas, quelle est la bonne façon de lancer des applications distinctes avec des arbres de supervision en Elixir ?

1voto

BurmajaM Points 654

Vous devez ajouter app2 comme dépendance de app1 et l'appeler dans les applications, comme :

mix.exs pour app2 :

  #...
  def application do
    [
      mod: {My.App2, []},
      applications: [:logger]
    ]
  end

  defp deps do
    [
      ...
    ]
  end
  #...
end

mix.exs pour app1 :

  def application do
    [
      mod: {My.App1, []},
      applications: [:logger, :my_app2]
    ]
  end

  defp deps do
    [
      {:my_app2, in_umbrella: true}
    ]
  end
  # ...
end

C'est le cas si les deux applications sont dans le même parapluie. Sinon, il suffit d'ajouter mon_app2 comme vous le feriez (à partir de hex, path ou git).

Pour plus d'informations sur les dépendances et les projets parapluie, consultez @ http://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-apps.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X