update - Haga que la aplicación elixir se compile y se vuelva a cargar al cambiar el código fuente
phoenix project elixir (4)
¿Cómo recompilar y recargar automáticamente mi aplicación iex + mix cada vez que modifico el código fuente?
Si no hay forma de que la combinación de mezclas iex + haga eso, ¿cuál es la alternativa más fácil? He comprobado la forma en que Phoenix realiza la recarga, y no parece ser fácil de implementar para mi pequeño proyecto de prueba.
También sé acerca de .iex.exs
de José:
defmodule R do
def reload! do
Mix.Task.reenable "compile.elixir"
Application.stop(Mix.Project.config[:app])
Mix.Task.run "compile.elixir"
Application.start(Mix.Project.config[:app], :permanent)
end
end
Y no estoy extremadamente contento ya que no se está cargando automáticamente al cambiar el código, ¡todavía tengo que escribir R.reload!
en iex.
Y ... por favor, ayúdame a crear la etiqueta "iex" en stackoverflow, mi reputación no es suficiente :)
Actualmente iex
tiene una función interna para hacer esto:
invoque IEx.Helpers.recompile dentro de la consola iex
.
Creo que esto es lo que está buscando: https://github.com/AgilionApps/remix
Lo más cercano que sé está en Alchemist for emacs by @tonini. En Alchemist, hay una opción para habilitar
(setq alchemist-hooks-test-on-save t)
lo que lo hace compilar y ejecutar pruebas al guardar.
Para Erlang, estaba usando "relx -d" junto con https://github.com/rustyio/sync La "-d" significa que los archivos fuente están vinculados mediante enlaces simbólicos.
Lo mismo funciona muy bien en el elixir. En mix.exs agregué: sincronizar en los siguientes dos lugares
defp deps do
[{:sync, git: "https://github.com/rustyio/sync.git", tag: "master"}, ....
def application do
[applications: [:logger, :sync],
Luego, el siguiente comando lo compila en una versión (antes de que funcione, deberás instalar hex y exrm).
mix release -dev
Ahora, cuando cambia un archivo .ex y lo guarda, se volverá a compilar y cargar directamente.
19:33:46.474 [info] ... /apps/testapp1/lib/kv/bucket.ex:0: Recompiled.
¡Solo quieres sincronización en tu entorno de desarrollo!