MissingApplicationsError — 의존하는 애플리케이션이 없을 때
MissingApplicationsError — 의존하는 애플리케이션이 없을 때
앱을 실행하는데 필요한 외부 애플리케이션(예: 의존성 라이브러리)이 설치되어 있지 않다면 문제가 생기겠죠. 그런 누락된 애플리케이션 때문에 발생하는 예외가 MissingApplicationsError예요.
본문
MissingApplicationsError는 어떤 애플리케이션이 하나 이상의 누락된 애플리케이션에 의존할 때 발생하는 예외예요. 이 예외는 Mix와 그 밖의 도구들이 사용해요. 라이브러리 저자도 쓸 수 있는데, 자기 라이브러리가 일부 기능에서만 외부 애플리케이션(의존성 같은)을 요구할 때가 그 경우예요.
이 예외의 필드들은 public이에요. 자세한 내용은 t/0를 참고하세요. Elixir v1.18.0부터 사용할 수 있어요.
예시
라이브러리가 특정 기능을 테스트할 때만 :plug가 필요하다고 가정해 볼게요. 그때 개발 환경에서 :plug가 설치되어 있는지 확인하고, 없으면 이 예외를 던져서 명확하게 알려 줄 수 있어요:
unless Application.spec(:plug, :vsn) do
raise MissingApplicationsError,
description: "application :plug is required for testing Plug-related functionality",
apps: [{:plug, "~> 1.0"}]
end
Application.spec(:plug, :vsn)으로 :plug가 실제로 로드되어 있는지 확인하고, 없으면 MissingApplicationsError를 :plug 버전 조건과 함께 던져요. 이렇게 하면 사용자가 "왜 이 기능이 동작하지 않는지"를 예외 메시지에서 바로 알 수 있어요. 누락된 앱을 결정적(deterministic)으로 검출해서 예외를 던진다는 점에서, 단순히 "없으니까 실패"하는 것보다 훨씬 도움이 되죠.
더 알아보기
- Application — 애플리케이션 스펙 조회(
Application.spec/2)와 로드·시작 - Mix — 의존성·애플리케이션 관리를 담당하는 빌드 도구
t/0— 이 예외의 public 필드 타입 스펙