2014-06-12 2 views
0

저는 비교적 간단한 Erlang 모듈을 연구했습니다. 모든 모듈이 함께 작동하는 4 개의 모듈이 있습니다. 모든 모듈 이름은 다음과 같이 "namespaced"입니다.얼랭 (Erlang) 애플리케이션으로 모듈을 패키지로 수집 하시겠습니까?

project 
project_helper 
project_another_module 
project_third_submodule 

모듈은 간단합니다. 그들은 단지 기능을 포함하고 있습니다. 동시 발생하는 것은 없습니다. 프로세스, 감독자 또는 gen_servers가 없습니다. 그냥 기능. 코드를 사용하려면 최상위 레벨 인 project 모듈에서 간단한 호출 함수를 호출하십시오. 모든 통화는 동기식입니다. 데이터를 전달하고 함수가 완료 될 때까지 기다린 다음 데이터를 다시 가져옵니다.

제 질문은이 코드를 어떻게 패키지화합니까? 응용 프로그램으로 설정해야합니까? Erlang 어플리케이션이 제공하는 이점은 무엇입니까?

답변

1

그것은 당신이 당신의 코드를 사용할 계획 방법에 따라 달라집니다. 코드를 응용 프로그램으로 설정할 필요가 없습니다. 패키지를 만드는 간단한 방법은 명령 c (Module)을 사용하여 Erlang 셸을 통해 모든 모듈을 컴파일 한 다음 폴더를 압축하고 필요할 때 언제든지 제공하는 것입니다.

그러나, 나는 OTP 애플리케이션을위한 최선의 방법을 따르도록 제안 : http://learnyousomeerlang.com/building-otp-applications

당신이 설정 OTP 비밀번호 응용 프로그램으로 코드를하는 경우, 당신이 다시 사용성을 줄 것입니다. 나중에 만들 다른 응용 프로그램에 이러한 모듈을 포함 할 수 있습니다.

철근 (https://github.com/rebar/rebar/wiki)을 빌드 도구로 사용하는 것이 좋습니다. 코드를 일부 소스 제어 환경에 저장하면 향후 프로젝트에 코드를 쉽게 포함시킬 수 있습니다.

1

다른 응용 프로그램이 .app 파일의 종속성으로 라이브러리를 넣을 수 있도록 응용 프로그램으로 압축해야합니다. 이 정보는 릴리스 생성 프로세스 중에 라이브러리를 포함하는 데 사용됩니다.

이렇게하려면 your_library.app에서 {mod, ...} 섹션을 생략하십시오. 응용 프로그램 설명서에서

: (erl -man app는)

mod: 
    Specifies the application callback module and a start argument, see application(3). 

    The mod key is necessary for an application implemented as a supervision tree, or the application controller will not know how to start it. The mod key can be 
    omitted for applications without processes, typically code libraries such as the application STDLIB. 
0

모듈 그룹을 패키징해야하는 경우에도 여전히 응용 프로그램에 속합니다. 응용 프로그램에는 콜백 모듈이 필요하지 않습니다. Learn You You Erlang은 이러한 유형의 응용 프로그램 "라이브러리 응용 프로그램"을 호출합니다. 라이브러리 .app 파일은 보통 .app 파일과 같아야합니다. 유일한 차이점은 mod tuple ({mod, {Module, Args}})이 존재하지 않는다는 것입니다.

자세한 내용은 LYSE를 참조하십시오. http://learnyousomeerlang.com/building-otp-applications#library-applications

관련 문제