2015-09-12 8 views
18

ソースコードを変更するたびにiex + mixアプリケーションを自動的に再コンパイルしてリロードするにはどうすればよいですか?elixirアプリケーションを再コンパイルしてソースコードを変更してリロードする

iex + mixの組み合わせがこれを行う方法がない場合、最も簡単な方法は何ですか?私は再ロードを行うフェニックスの方法をチェックしました。私の小さなテストプロジェクトでは実装が簡単ではないようです。

私はまた、ホセの.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 

そして、私は非常に満足していないよ、私はまだIEXにR.reload!を入力する必要があります。私の知っている

そして...私はstackoverflowの上で「IEX」タグを作成して助けてください、私の評判は十分ではありません:)

+0

私たちはこれについてelixir-lang-talkメーリングリストについて議論したと思います。私は、いくつかのオープンソースプロジェクトでさえそれが出てきたと思っています...それとも、mix testのためでしたか? –

+0

ああ...はい、githubのいくつかのプロジェクトは、私はテストし、彼らが働いているかどうかをカムバックします。 – ardhitama

答えて

3

最も近いものは@toniniによってemacsのための錬金術師です。 は錬金術師で、それはコンパイルになり、保存時のテストを実行します

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

を有効にするオプションがあります。

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

1

Erlangのために、私は一緒にhttps://github.com/rustyio/syncと「relx -d」を使用していた「-d」は、ソースファイルがリンクされていることを意味しシンボリックリンクを使って

同じことがエリクサーでうまくいきます。 mix.exsで私がコメントを追加しました:同期を

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


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

はその後、次のコマンドは、(それが動作する前に、あなたが進とexrmをインストールする必要があります)のリリースにそれをコンパイルし、次の2つの場所で。

mix release -dev 

ここで、.exファイルを変更して保存すると、再コンパイルされて直接ロードされます。

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

あなたの開発環境でのみ同期が必要です。現在

+1

私はこれが正しく働いているとは思わない:https://github.com/rustyio/sync/issues/56 –

+1

@Michael Terryはい、同じ問題がここにあります。 – Doodloo

+0

これは一貫してエリキシル剤には作用しません。無限ループマニア。 – CallMeNorm

関連する問題