2017-02-14 14 views
0

Можно ли условно запустить инициализатор экземпляра на основе переменной окружения?EmberJs; условно запускать инициализатор экземпляра

Вариант использования: У меня есть приложение Ember, работающее на моей локальной машине. Если при запуске приложения присутствует определенная переменная среды, я хочу запустить службу под названием «огни». Если этого нет, я не хочу, чтобы служба запускалась.

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

ответ

1

Хороший способ - удалить его из сборки. (. Как Lux отметил в своем ответе)

Быстрый способ, чтобы получить переменные окружения и сделать проверку таких как:

//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, поэтому у вас есть доступ ко всему, что вам нужно.