2017-02-14 3 views
0

Ist es möglich, auf Basis einer Umgebungsvariablen einen Instanz-Initialisierer bedingt auszuführen?EmberJs; bedingt Instanz-Initialisierer starten

Der Anwendungsfall: Ich habe eine Ember App auf meinem lokalen Rechner ausgeführt. Wenn beim Start der App eine bestimmte Umgebungsvariable vorhanden ist, möchte ich einen Dienst namens "lights" starten. Wenn es nicht vorhanden ist, möchte ich nicht, dass der Dienst ausgeführt wird.

Antwort

1

Ein schöner Weg ist, es aus dem Build zu entfernen. (. Wie Lux in seiner Antwort erwähnt)

Eine schnelle Art und Weise ist die Umgebungsvariable zu erhalten und einen Scheck tun wie:

//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

Hängt davon ab, was er unter 'Umwelt variable'. Seine Frage klang so, als ob er eine Systemumgebungsvariable meinte, die er in seiner Shell setzen kann, was merkwürdig ist, aber etwas komplizierter als etwas aus der Konfiguration. – Lux

+0

Wo wird dann die Umgebungsvariable gesetzt? Client oder Server? Vielleicht ist es mein Missverständnis. – ykaragol

1

Nun, wenn Sie die Umgebungsvariable während des Builds erkennen wollen, ist das nicht wirklich so schwer. Sie könnten einfach ein In-Repo-Addon schreiben und den preprocessTree Hook verwenden, um den Initialisierer hinzuzufügen oder zu entfernen. Dort sind Sie in Knoten env, so haben Sie Zugriff auf alles, was Sie brauchen.