2011-02-15 87 views
9

如何組織您的erlang工作流程?我正在學習一些Erlang,並且我正在使用Rebar,在每次編輯後重新編譯,重新構建並重新啓動整個發行版(我試圖保留OTP版本)。我很確定有一個更聰明的方法來做到這一點。Erlang工作流程

回答

3

在Etorrent,我使用的一個小竅門,你可能會喜歡:

當你建立了一個開發版本,你可以執行命令make console其具有以下定義:

console: 
    dev/etorrent-dev/bin/etorrent console \ 
      -pa ../../apps/etorrent/ebin 

基本上,它使用大多數東西的發佈版本,但覆蓋應用程序ebin在通常構建軟件的位置。現在,運行一個控制檯,您可以編輯您的代碼,運行make(我在Emacs中點擊一個組合鍵),修復錯誤,再次運行make等等。當您對更改感到滿意時,可以進入控制檯(erlang shell)並執行l(ModuleToLoad),此時正在運行的系統會獲取注入的新代碼。 OTP將自動獲取熱部署代碼更改並更改進程。從本質上講,只有在處理代碼時才需要重啓。

如今,我們也進行了測試,因此您可以在etorrent中執行make test,讓測試框架在注入之前在您新形成的代碼上運行,如果您希望更多地保證新代碼的正常工作。

3

芝加哥老大你只需點擊「刷新」,在您的網頁瀏覽器:

http://www.chicagoboss.org/

即使你的目標不是網絡的發展,這可能是學習二郎比更有趣的方式您目前的工作流程CB在瀏覽器中正確顯示編譯和運行時錯誤。

3

我一直在使用Sync來避免可怕的編輯/重新編譯/重新啓動循環。它會監視源文件的更改,然後僅重新編譯和重新加載更改後的模塊。它將錯誤和警告輸出到控制檯,並將它們發送到notify-send/growl(如果可用)。

這是因爲運行sync:go().

看看this rebar template一個更好的例子一樣簡單。

如果您正在集羣上開發另一個很棒的功能,那就是sync的「補丁模式」。使用「補丁模式」時,每次同步成功編譯模塊時,它會將編譯後的代碼發送到連接到羣集的每個節點並重新加載模塊!

0

爲了在每次編輯時自動重新載入src文件,您可以試試rebar3中的自動插件。

我最近搬到了rebar3,發現它比螺紋鋼更容易操作。