Двигатели Ember внутри Rails Двигатели через ember-cli-rails

У нас есть высокомодульное приложение rails5, которое разбито на движки рельсов по нескольким хранилищам и интегрировано в рубиновые самоцветы.

Теперь мы хотим представить EmberJS, используя ember-cli-rails, Основное приложение рельсов содержит основное приложение frontend каталог, в то время как каждый из рельсовых двигателей содержит тлеющий двигатель (через ember-engine) в frontend каталог.

Как установить угольные двигатели модулей в основной угольный двигатель?

1 ответ

Решение

Из-за того, что я пока не нашел другого решения, я создал инициализатор, который символически связывает каталоги ember engine всех движков rails с node_modules потребляющего тлеющего двигателя в приложении потребляющих рельсов:

# 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

Этот подход, вероятно, не очень чистый, но, похоже, работает.

Другие вопросы по тегам