Erlang:如何動態切換多個版本的Module/Application

來源:互聯網
上載者:User

   問題:

           需要在系統中動態載入不同版本的Application,主要是介面的變化

   開始的方案:

         1 切換clearcase中的view,從而選取不同的版本

         2 把這個App脫離clearcase的控制,不同版本用不同目錄做區分

   可行性分析階段:

         第一種方案很快被放棄,單使用者情況下很好切換view,但是系統是多使用者,沒有有效辦法控制多個view下面的App:(如果誰知道,請告訴我:)

 
                                                               -------------
App(viewB),user1

               如           ModuleA (viewA )        -------------      App(viewC),user2

        第二種方案可行

             主要思路是讓這個APP獨立於clearcase的版本控制,這要就不需要在不同的view中做切換。本系統只需要根據使用者指定的版本動態在相應的路徑中載入APP就可以,至於檢測APP在clearcase中的版本變化和建立相應的路徑等工作可以用script完成,不作為本系統的一部分。

             Erlang中動態載入的特性主要在code這個module裡面,詳細可以參考http://www.erlang.org官方解釋。這個module主要是code server提供的介面,負責erlang系統中beam檔案路徑管理。

針對具體問題,思路如下:

               如果系統中已經包含Module的路徑,將其卸載:code:del_path

       載入新的路徑 code:add_path,然後更新 code:rehash

       另外開始用erl啟動時不要用pz包含這個Module的路徑,負責可能導致無效(沒有仔細研究),建議採用這種動態指定的方法。

       更新Module的路徑後,正常使用即可。


PS:

     需要把Module delete掉,使用code:delete,因為省事的原因我使用init:stop把這個node幹掉了,所以不需要:)                               

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.