Custom Wizard 插件会创建自己的 Ember 应用,并从 Discourse 核心借用部分资源。
为此,我们使用一个名为 wizard-custom.js 的 JavaScript 文件,其中包含针对各个文件的 Sprockets 指令。
在某些情况下,我们需要从同一文件夹中引入大量文件,曾一度考虑使用 require_tree,但遗憾的是,由于以下原因无法实现:
wizard-custom.js文件位于插件内部,因此其load path与 Discourse 不同,我们只能引用load path内的文件。- 使用
require_tree时,Sprockets 不允许使用绝对路径。
解决这一问题还将意味着插件因 Discourse 核心变更而崩溃的情况会减少。
为缓解这一问题,我们创建了一个自定义的 Sprockets 指令 require_tree_discourse,该指令专门使用绝对路径在 Discourse 文件夹内查找资源。包含该代码的 PR 如下:
这对 Discourse 开发者以及广大 Rails 开发者来说应该会很有趣。