Ember&这里有一个关于两者的严肃问题的新手。
我正在构建一个利用ember-rails设置的项目,如下所示:https://github.com/dgeb/ember_data_example
然而,为了使事情变得更加复杂,该项目旨在打包为一个宝石,以包含在更大的应用程序中。为此,我创建了一个可安装的引擎,其中包含一个用于测试的虚拟项目。
问题是,ember-rails,特别是把手无法在预定位置找到模板。这可以防止许多功能正常工作。
在移动把手模板目录方面,我在这里找到了一个解决方案:How can I specify an alternative directory for my HandlebarsJS templates with the ember-rails gem?
总结它说明我们可以通过设置config.handlebars.templates_root
但是,我认为如果另一个 ember-rails引擎需要加载到更大的应用程序中,这将导致冲突..并且需要自己的配置设置。
有没有人有这些设置的经验,有没有办法让命名空间的ember应用程序在更大的上下文中发挥出色?
顺便说一句,这是在ruby 1.9.2上运行最新ember-rails的rails 4。
答案 0 :(得分:7)
经过大量研究后,似乎Ember支持覆盖默认解析器:http://emberjs.com/api/classes/Ember.DefaultResolver.html
您可以按照此处的说明指示它在命名空间的应用程序中查找模板:https://github.com/emberjs/ember.js/pull/2354
本质上,可以将解析器添加到Ember.Application.create()
:(在上述拉取请求中引用@lukemelia)
App1 = Ember.Application.create({
resolver: Ember.DefaultResolver.extend({
resolveTemplate: function(parsedName) {
parsedName.fullNameWithoutType = "app1/" + parsedName.fullNameWithoutType;
return this._super(parsedName);
}
})
});
在撰写本文时,这似乎是ember rc5的一部分。
答案 1 :(得分:1)
我刚刚在rails引擎中创建了一个ember应用程序,我遇到了与获得把手支持相同的问题。我无法让ember-rails在发动机内工作,所以我看了一下ember-rails来源,我最后只是直接在我的引擎中注册了倾斜的把手。 ember-rails中有一些配置可以更改根模板路径:handlebars.templates_root。但是我没有成功地让它在rails引擎中工作。
https://github.com/andrewmp1/spree_outlet
我仍然没有真正意识到如何使用虚拟应用程序进行集成测试。但它的出现。
答案 2 :(得分:0)
这是old ember app and also a rails engine。它使用基于gemfile条目的 ember-rails gem 。你可能想查一查。在此处查看它安装在rails应用程序中:ember-cart-example。此外,这是online demo of the mounted rails engine inside the rails app。
答案 3 :(得分:0)
还有另一个解决方案:效率不高但是很简单,它适用于这种情况(ember作为rails应用程序中的引擎)。首先在引擎中创建初始化程序。引擎的config目录中没有初始化程序目录,但您可以创建一个,并且放置在其中的初始化程序将起作用。
# path_to_engine/config/initializers/ember.rb
YourEngine::Engine.config.handlebars.templates_root = "your_path/templates"
任何其他与引擎相关的特定于ember的配置也可以放在这里