Rebar3使用流程

leonplion 10年前發布 | 35K 次閱讀 Rebar3

一般流程

創建項目

   

    <div>
        rebar3 new [lib|app|release|plugin] myapp
    </div>
</div>

</pre></div>

添加依賴

  1. rebar.config添加{deps, [cowboy]},依賴的其他形式在昨天的文章中提到,請參看這篇文章
  2. 修改.app.src,applications屬性里添加依賴
  3. </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究竟有什么好處?舉個例子:

    1. {include_erts, false},開發時使用這個配置,在執行rebar3 release時,只是創建一個ERTS的軟鏈接,省下了拷貝文件的時間。在生產環境下,你可以創建一個product的profile,里面定義{include_erts, true},這樣執行rebar3 as product release時,ERTS會被拷貝到發布文件夾中,在服務器上部署不需要安裝Erlang。

      </li>

    2. {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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!