2015-09-12 21 views
18

Kaynak kodunu değiştirdiğimde her zaman iex + mix uygulamam nasıl otomatik olarak yeniden derlenir ve yeniden yüklenir?Elixir uygulamasını yeniden derleyin ve kaynak kodu üzerinde değişiklik yapın.

Eğer iex + mix kombinasyonunun bunu yapmasının bir yolu yoksa, en kolay alternatif hangisidir? Phoenix'in yeniden yükleme yapmasını kontrol ettim ve küçük test projem için uygulanması kolay değil.

Ben de José en .iex.exs hakkında bilmek:

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 

Ve ben, ben hala IEX üzerinde R.reload! yazmanıza gerek o kod değişikliği otomatik olarak yeniden değil çünkü son derece mutlu değilim.

Ve .. ben stackoverflow "IEX" etiketi oluşturmak yardım lütfen, ünüm yeterli değildir :) biliyorum

+0

Sanırım elixir-lang-talk e-posta listesi hakkında bazı tartışmalar yaptık. Sanırım bazı açık kaynak projeleri bile çıktı mı ... yoksa mix test.watch için mi? –

+0

ahh ... evet github hakkında birkaç proje var, çalışıp çalışmadığına bakıp test edeceğim. – ardhitama

cevap

5

Şu iex Bunu yapmak için dahili bir işlevi vardır.

3

yakın şey arasında @tonini tarafından emacs'dan için Simyacı içindedir. Simyacı, bu derleme yapar ve kaydederken testleri çalıştırır

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

etkinleştirmek için bir seçenek var.

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

1

kaynak dosyaları bağlantılı olmadığı anlamına gelir Symlinks kullanarak.

Aynı ilerde Elixir'de güzel çalışır. mix.exs ben ekledi: senkronizasyonunu

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


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

Daha sonra aşağıdaki komutu (Çalışır önce, sen onaltılık ve exrm yüklemek zorunda kalacak) bir sürümü içine derler şu iki yerde.

mix release -dev 

Şimdi, bir .ex dosyasını değiştirdiğinizde ve kaydederken, doğrudan yeniden derlenecek ve yüklenecektir.

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

Sadece geliştirme ortamınızda eşitleme yapmak istiyorsunuz!

IEx.Helpers.recompile konsol iex içine çağırmak:

+1

Bunun nedeni şu şekilde çalışabilir: https://github.com/rustyio/sync/issues/56 –

+1

@Michael Terry evet, aynı sorun burada. – Doodloo

+0

Bu, sürekli iksir için çalışmıyor. Sonsuz döngü manisi. – CallMeNorm