2015-09-12 13 views
18

Wie neu kompilieren und laden Sie meine iex + mix Anwendung jedes Mal, wenn ich den Quellcode ändern?Make Elixier App neu kompilieren und neu laden auf Quellcode ändern

Wenn es keine Möglichkeit für iex + mix Kombination gibt, was ist die einfachste Alternative? Ich habe Phoenix nachgeladen, und es scheint für mein kleines Testprojekt nicht einfach zu sein.

Ich weiß auch über Josés .iex.exs:

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 

Und ich bin nicht sehr glücklich, da es nicht automatisch auf Codewechsel Nachladen, habe ich noch R.reload! auf iex eingeben müssen.

Und .. bitte helfen Sie mir „iex“ Tag auf Stackoverflow zu erzeugen, ist mein Ruf nicht ausreichend :)

+0

Ich denke, wir hatten einige Diskussionen über elixir-lang-talk Mailing-Liste darüber. Ich denke, dass sogar einige Open-Source-Projekte herauskamen ... oder war es für Mix test.watch? –

+0

ahh ... ja da ein paar Projekte auf GitHub, ich werde testen und Comeback ob sie arbeiten oder nicht. – ardhitama

Antwort

3

nächste, was ich kenne, in Alchemist für Emacs von @tonini ist. In Alchemist, gibt es eine Option

(setq alchemist-hooks-test-on-save t) 

zu ermöglichen, die es Tests kompilieren und läuft macht, wenn man sparen.

https://github.com/tonini/alchemist.el#testing

1

Für Erlang, ich wurde mit "relx -d" zusammen mit https://github.com/rustyio/sync Die "-d" bedeutet, dass Quelldateien verknüpft sind, Verwenden von Symlinks.

Das gleiche funktioniert gut in Elixir. In mix.exs fügte ich hinzu: sync in den folgenden zwei Stellen

defp deps do 
     [{:sync, git: "https://github.com/rustyio/sync.git", tag: "master"}, .... 


    def application do 
    [applications: [:logger, :sync], 

Dann wird der folgende Befehl in ein Release kompiliert (bevor es funktioniert, werden Sie hex und exrm installieren).

mix release -dev 

Wenn Sie jetzt eine .ex-Datei ändern und speichern, wird sie neu kompiliert und direkt geladen.

19:33:46.474 [info] ... /apps/testapp1/lib/kv/bucket.ex:0: Recompiled. 

Sie möchten nur in Ihrer Entwicklungsumgebung synchronisieren!

+1

Ich glaube nicht, dass dies richtig funktionieren könnte aufgrund: https://github.com/rustyio/sync/issues/56 –

+1

@Michael Terry ja, das gleiche Problem hier. – Doodloo

+0

Dies funktioniert nicht dauerhaft für Elixier. Unendliche Loop-Manie. – CallMeNorm