Актив руля не компилируется с тлеющими углами после обновления до Rails 4
У меня есть приложение Rails с Ember на фронтэнде. Сегодня я обновился до Rails 4, и единственная проблема, которую я не могу решить, это то, что мои шаблоны Handlebars не компилируются или не включаются в качестве ресурса (в режиме разработки). Я не получаю никаких сообщений об ошибках.
Я сгенерировал новое тестовое приложение Rails 4 и установил Ember, и он отлично работает с файлами Handlebars. Все драгоценные камни в тестовом приложении присутствуют в моем приложении. Я пробовал бегать rake rails:upgrade
и это не имело никакого эффекта. Я попытался изменить источник ember-rails для вывода сообщений журнала, и сообщения и пути выполнения были одинаковыми для тестового приложения и моего приложения.
Я требую шаблоны так же, как я всегда делал:
require_tree ./templates
Я попытался использовать ember-rails 0.11.1 и от мастера Github, но не повезло.
Связанные версии драгоценных камней:
* ember-data-source (0.0.5)
* ember-rails (0.11.1 4dc902b)
* ember-source (1.0.0.rc2.0)
* sprockets (2.9.0)
* sprockets-rails (2.0.0.rc3)
* barber (0.4.1)
- Все шаблоны находятся в app/assets/javascripts/templates и все используют расширение.handlebars. Хотя я тоже пробовал.hbs и.js.hjs.
Из консоли Chrome:
Ember.TEMPLATES Object {}
Я могу вручную скомпилировать ресурсы из командной строки Rails следующим образом:
environment = Sprockets::Environment.new
environment.append_path 'app/assets/javascripts'
a = environment['templates/test.handlebars']
a.to_s => "..compiled template.."
И двигатель зарегистрирован:
environment.engines
=> {..".handlebars"=>Ember::Handlebars::Template..}
Rails.application.config.assets.paths включает папку app / assets / javascripts, как и должно быть.
Любая помощь с этим будет принята с благодарностью, спасибо!
1 ответ
Я сузил его до следующего блока в файле engine.rb ember-rail. Для моего приложения это отправка register_engine на Sprockets, а не app.assets. В новом тестовом приложении Rails 4 он тоже делал это. Однако в моем приложении, когда я заставляю выполнение использовать app.assets, шаблоны руля компилируются.
Я считаю, что с тех пор, как мое приложение было обновлено с Rails 3, где-то не хватает конфигурации для правильного использования Sprockets. Я выложу больше, когда узнаю.
initializer "ember_rails.setup", :after => :append_assets_path, :group => :all do |app|
sprockets = if ::Rails::VERSION::MAJOR == 4
Sprockets.respond_to?('register_engine') ? Sprockets : app.assets
else
app.assets
end
sprockets.register_engine '.handlebars', Ember::Handlebars::Template
sprockets.register_engine '.hbs', Ember::Handlebars::Template
sprockets.register_engine '.hjs', Ember::Handlebars::Template
end
ОБНОВЛЕНИЕ: Для меня изменение порядка рельсов в application.rb было достаточно, чтобы решить проблему. Я считаю, что какой-то другой движок очищал конфигурацию Sprockets, поэтому, загрузив движок Ember::Rails позднее, я смог обойти эту проблему.
config.railties_order = [:main_app, :all, Ember::Rails::Engine]