2016-12-15 5 views
1

Wir haben eine hohe modulare rails5 App, die in Schienen Motoren über mehrere Repositories aufgeteilt und als Rubin Edelsteine ​​integriert ist.Ember Motoren innerhalb Schienen Motoren über ember-cli-rails

Jetzt möchten wir EmberJS mit ember-cli-rails vorstellen. Die Hauptschienenanwendung enthält die Hauptglühmittelanwendung im Verzeichnis frontend, während jede der Schienenmotoren eine Glimmmaschine (über ember-engine) in einem Verzeichnis frontend enthält.

Wie werden die Glutmotoren der Module in die Hauptglühmaschine eingebaut?

Antwort

0

Aufgrund der Tatsache, dass ich bisher keine andere Lösung gefunden habe, habe ich einen Initialisierer erstellt, die die glut Motor Verzeichnisse aller Schienen Motoren in die node_modules des Verbrauchers ember Motor in der konsumierenden Schienen App symbolisch verlinkt:

# Get the node_modules dir 
nm_dir = Rails.root.join('frontend', 'node_modules') 

# Delete existing symlinks 
Dir.new(nm_dir.to_s).each { |entry| FileUtils.rm_rf(entry) if entry =~ /^.+\-frontend$/ } 

# MODULES contains an array of the rails engine gem names 
MODULES.each do |module_name| 
    # Each module has a Manifest class, load that 
    manifest = load_manifest(module_name) 

    # Get the path to the frontend dir of the rails engine 
    source = Pathname.new(manifest.method(:setup).source_location[0].split('/lib/')[0]).join('frontend').to_s 

    # Symlink destination 
    destination = nm_dir.join("#{module_name}-frontend").to_s 

    # Symlink it 
    FileUtils.symlink source, destination, force: true 
end 

Dieser Ansatz ist wahrscheinlich nicht sehr sauber, aber es scheint zu funktionieren.

+0

Mittlerweile habe ich 'npm link' entdeckt und baue das obige Snippet neu auf, um npm link zu verwenden, anstatt manuell SymLinks zu erstellen. https://docs.npmjs.com/cli/link – phortx

Verwandte Themen