2013-09-04 8 views
1

저는 Erlang 프로젝트를 구조화하는 방법을 이해하기 위해 OTP noobie로서 고심하고 있습니다.Erlang 프로젝트에는 여러 개의 응용 프로그램이 있습니다. 어떻게 시작해야합니까?

proj_root 
    apps 
     app1 
     app2 
     appN 
    rebar.config 

나는 응용 프로그램과 쉘, 말, APP1 시작할 수 있습니다 : (APP1)를 시작 지금까지 철근에 의해 관리되는 응용 프로그램 디렉토리 아래에 여러 응용 프로그램이 있습니다. 의심의 여지가 appN을 통해 이것을 반복 할 수 있습니다. 그러나 더 좋거나 더 좋은 방법이 있습니까? 말하자면,이 모든 시작을 번들로 묶는 함수를 작성할 수 있습니까? 그렇다면 어디에 넣어야합니까?

이 줄에는 몇 가지 다른 질문이 있지만 별도로 게시 할 예정입니다.

많은 감사합니다, 당신이 제안대로 실제로 수동으로 응용 프로그램을 시작할 수

답변

6

LRP. 많은 응용 프로그램이 있고 그 사이에 종속성이있는 경우이 작업은 신속하게 부담이 될 수 있습니다.

과정을 자동화하는 것은 재귀 함수로 구현하기가 매우 쉽습니다 (). 하나 이상의 종속성이 실행되고 있지 않은 상태에서 응용 프로그램을 시작하려고하면 application:start/1이 실패하고 {error, {not_started, App}}을 반환합니다. 이 함수는 모든 응용 프로그램에 있거나 심지어는 자체 응용 프로그램에있을 수 있습니다.

그러나 진행이 설명서 (또는 자동) 방법은 (... 테스트를 위해 일반적으로) 유용 할 수 있습니다 경우에도 하지 OTP 방식입니다. OTP 원칙을 따르는 경우 은 모든 응용 프로그램이 포함 된 파일로 릴리스을 생성해야합니다. OTP 릴리스는 일련의 응용 프로그램 (사용자 및 사용자가 사용하는 시스템 응용 프로그램), 에뮬레이터 및 모든 응용 프로그램을 시작하고 종속성을 처리하는 부팅 스크립트 부팅 스크립트로 구성됩니다. 응용 프로그램에서 노드를 시작하려면 적절한 부팅 스크립트를 가리키는 erl-boot 플래그를 사용하여 수행 할 수 있습니다.

이것은 매우 복잡하고 보강 철근은 실제로 build releases 일 수 있습니다. 또한 OTP 부트 메커니즘을 사용하여 모든 응용 프로그램으로 노드를 시작하는 쉘 스크립트를 생성합니다.

+0

감사합니다. Paul. 이것은 정확히 내가 찾던 지침의 종류입니다. 릴리스를 만드는 방법을 살펴 보았지만 문서의 밀도가 무서웠습니다. 그러나 당신은 나에게 파고 들어 내가 배워야 할 것을 배울 동기를 부여했다. –

+0

건축용 릴리즈와 관련하여 보강 철근이 매우 유용하다는 것이 발견되었습니다. 구체적으로는 'rebar create-node rebar generate' 물론, 문서를 읽고 자동화의 과정을 이해해야하지만 철근은 OTP 표준을 준수하면서 더 빨리 작업 할 수 있습니다. –