2017-02-14 6 views
0

환경 변수에 따라 조건부로 인스턴스 이니셜 라이저를 실행할 수 있습니까?EmberJs; 조건부로 인스턴스 이니셜 라이저를 시작하십시오.

사용 사례 : 로컬 컴퓨터에서 Ember 앱을 실행하고 있습니다. 앱이 시작될 때 특정 환경 변수가 있으면 "lights"라는 서비스를 시작하고 싶습니다. 존재하지 않는다면 서비스를 실행하고 싶지 않습니다.

//instance-intializers/lights.js 
export default { 
    name: 'lights', 
    initialize(application) { 
    application.container.lookup('service:lights'); 
} 
}; 

답변

1

좋은 방법은 빌드에서 제거하는 것입니다.

//instance-intializers/lights.js 
export default { 
    name: 'lights', 
    initialize(application) { 
    let env = application.resolveRegistration('config:environment'); 
    if(env === ''){ 
     application.lookup('service:lights'); 
     //... do whatever you want... 
    } 
    } 
}; 
+0

그는'환경 variable'에 의해 무엇을 의미하는지에 따라 달라집니다. (럭스는 그의 대답에 언급 한 바와 같이)

빠른 방법은 환경 변수를 얻을 같은 검사를하는 것입니다. 그의 질문은 그가 껍데기로 설정할 수있는 시스템 환경 변수를 뜻하는 것처럼 들리지만 이상하게 들리지만 설정에서 좀 더 까다로워. – Lux

+0

그러면 환경 변수는 어디에 있습니까? 클라이언트 또는 서버? 어쩌면 그것의 나의 오해. – ykaragol

1

환경 변수를 빌드하는 동안 감지하고 싶다면 그리 어렵지 않습니다. in-repo-addon을 작성하고 preprocessTree 후크를 사용하여 이니셜 라이저를 추가하거나 제거 할 수 있습니다. 거기 엔 노드 env에 있기 때문에 필요한 모든 것을 이용할 수 있습니다.