Elixir fournit un ensemble d'outils simplifiant la gestion des dépendances et la publication de l'application (releases).
Mix
Mix est l'outil de gestion pour les applications Elixir.
| Commande | Description |
|---|---|
mix new myapp |
Créer une nouvelle application myapp |
mix new --sup myapp |
Créer une nouvelle application myapp avec
superviseur |
| mix deps.get | Télécharger les dépendances listées dans mix.exs depuis les dépôts Hex |
| mix deps.update | Mettre à jour les dépendances listées dans mix.exs |
mix deps.clean circuits_uart |
Supprimer une dépendance (ici circuits_uart) |
| mix deps.clean --all | Supprimer toutes les dépendances téléchargées/compilées |
mix deps.compile input_event |
Compiler une dépendance particulière (ici
input_event) |
| mix compile | Compile l'application (les dépendances doivent être téléchargées
avec mix deps.get |
| MIX_ENV=prod mix release | Générer une release (disponible à partir de la version 1.9 d'Elixir) |
| mix run | Exécuter l'application en mode non interactif |
| iex -S mix | Exécuter l'application en mode interactif avec IEx |
| mix clean --deps | Nettoyage de tous ce qui a été compilé |
Gestion des releases
Les releases sont générées dans _build/prod ou
_build/dev dépendamment de la variable MIX_ENV.
| Commande | Description |
|---|---|
| MIX_ENV=prod mix release --path ../my_app_release | Créer une release de production dans un dossier spécifique |
MIX_ENV=prod mix release name --overwrite --force |
Créer une release de production avec les paramètres défini dans
mix.exs pour name en écrasant l'existante et
en forçant la recompilation |
| _build/prod/rel/my_app/bin/my_app start_iex | Exécuter une release de production avec IEx |
bin/RELEASE_NAME eval "IO.puts(:hello)" |
Exécuter un module/fonction de la release sur une nouvelle instance de l'application |
bin/RELEASE_NAME rpc "IO.puts(:hello)" |
Exécuter un module/fonction de la release sur une instance en fonction de l'applications |
| bin/my_app remote | Se connecter à l'application via un shell distant |
| bin/RELEASE_NAME daemon | Exécuter une release en mode démon (UNIX) |
| bin/RELEASE_NAME install | Installer un service Windows pour exécuter la release |
Le fichier mix.exs
Le fichier mix.exs contient la configuration de
l'application, des dépendances et des releases.
defmodule Serial.MixProject do
use Mix.Project
def project do
[
app: :serial,
version: "1.0.0",
elixir: "~> 1.9",
start_permanent: Mix.env() == :prod,
deps: deps(),
releases: [
# Configuration de la release "serial_prod"
serial_prod: [
include_executables_for: [:unix],
applications: [runtime_tools: :permanent]
]
]
]
end
# Configuration de l'application (plus d'options avec "mix help compile.app").
def application do
[
extra_applications: [:logger],
mod: {Serial.Application, []}
]
end
# Dépendances (plus d'option avec "mix help deps").
defp deps do
[
{:circuits_uart, "~> 1.3"}
]
end
endObserver
Pour visualiser les toutes les caractéristiques de notre application
(dans iex, en ayant au préalable installé le package
erlang-observer):
:observer.startCompilation manuelle de fichiers source sans Mix
Pour le compiler manuellement et obtenir un binaire (bytecode pour la machine virtuelle BEAM):
elixirc elixir_app/lib/elixir_app/application.ex
elixirc elixir_app/lib/elixir_app/worker.ex
On obtient alors les fichiers
Elixir.ElixirApp.Application.beam et
Elixir.ElixirApp.Worker.beam
Pour l'exécuter depuis le shell (en se plaçant dans le même dossier
que Elixir.ElixirApp.Application.beam):
elixir -e "ElixirApp.Application.start(:ok, [])"