Rebar3使用流程
一般流程
創建項目
<div> rebar3 new [lib|app|release|plugin] myapp </div> </div></pre></div>
添加依賴
- rebar.config添加{deps, [cowboy]},依賴的其他形式在昨天的文章中提到,請參看這篇文章
- 修改.app.src,applications屬性里添加依賴
</ol>編譯
<div> rebar3 compile </div> </div></pre></div>
rebar3里沒有get-dep這個選項,直接compile就會獲取依賴。
在shell中運行項目
<div> rebar3 shell </div> </div></pre></div>
這個命令會包含項目的ebin以及所有依賴的ebin。
如果項目是一個release
發布
<div> rebar3 release </div> </div></pre></div>
運行之后,會在_build/default/rel中創建一個版本的release。
打包(這步會運行release,然后生成一個tar.gz包)
<div> rebar3 tar </div> </div></pre></div>
測試環境和生產環境有不同配置?
rebar3相對于rebar有一個很重大的改進,就是增加了profile,什么是profile呢?可以簡單理解為不同的環境,用過ruby on rails的同學對這個很好理解。
先來看看profile是怎樣定義的,下面直接拿官方文檔的例子來說明:
<div> {profiles, [ </div> </div> <div> <div> {prod, [{relx, [{dev_mode, false}, </div> </div> <div> <div> {include_erts, true}]}]} </div> </div> <div> <div> ] </div> </div> <div> <div> }. </div> </div></pre></div>
可以看到profiles是一個列表,我們可以定義不同的profile,一個profile就是一個環境,比如dev,product,test。
在命令行中可以通過rebar3 as PROFILE command來使用特定的profile執行命令,如果不指定就是用rebar.config的默認配置,注意,profile的配置會覆蓋同名默認配置。
as命令也可以指定多個profile,用逗號隔開,這個下次專門講profile的時候再展開。
這個profile究竟有什么好處?舉個例子:
{include_erts, false},開發時使用這個配置,在執行rebar3 release時,只是創建一個ERTS的軟鏈接,省下了拷貝文件的時間。在生產環境下,你可以創建一個product的profile,里面定義{include_erts, true},這樣執行rebar3 as product release時,ERTS會被拷貝到發布文件夾中,在服務器上部署不需要安裝Erlang。
</li>{dev_mode, true},開發時使用這個配置,會把你的項目做一個軟鏈接,這樣你修改了代碼以后,在Erlang shell里執行熱更新就行了。說到熱更新,推薦rustyio/sync,在開發時加入這個依賴,會自動掃描最新編譯的代碼進行熱更,再也不用手動執行l(module_name)了。如果你有更好的方法也歡迎提出。
</li> </ol>總結
希望rebar3的出現能規范Erlang的開發流程,現在很多Erlang項目還是自己寫shell腳本做上面這些事情,一方面不通用,另一方面換一批人接手的話上手比較慢。
來自:http://blog.goofansu.com/2015/08/02/rebar3-workflow.html本文由用戶 leonplion 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!相關資訊
sesese色