我正在处理一个需要稍微改变 Refinery 的 WYMEditor 行为的项目。这可以通过覆盖 jquery.refinery.wymeditor.js
轻松完成。使用 rake refinery:override
并根据我自己的需要对其进行编辑,这在开发环境中运行良好。
但是,当涉及到生产时,覆盖将被忽略。也就是说,编译后的 Assets 只包含 jquery.refinery.wymeditor.js
从 bundle 中直接编辑该文件可能会产生所需的效果,但这不是应该完成的方式。
奇怪的是,这个问题显然只有在试图覆盖与后端相关的 Assets 时才会表现出来。
知道我正在使用精炼边缘可能很有用。
任何帮助表示赞赏。
最佳答案
所以我设法打败了它。首先要提到的是,如果不深入研究 Refinery 源代码,这是不可能的。
正如我在评论中已经写的那样,问题是我试图覆盖未直接包含在 View 中的 Assets ( wymeditor/jquery.refinery.wymeditor.js 在我的情况下),但在另一项 Assets 中被引用,该 Assets 取自 gem。由于 sprockets 对 Refinery 的覆盖一无所知,它也通过相对路径获取引用的 Assets ,即来自 gem(因此,未修改)。所以,同样,在我的情况下,解决方案是覆盖 炼油厂/wymeditor.js ,一切都充满魅力。
如果您需要更改 WYMEditor 之外的任何其他后端脚本,您很可能必须覆盖 炼油厂/refinery.js ,其中包括所有其他后端脚本,以及您需要修改的脚本。
不过,有一个大问题。有了所有这些覆盖,我所做的任何更新都非常容易出错,因为有些文件会更新,有些则不会。它可以通过覆盖所有内容来避免,但这实际上意味着根本没有更新。
关于ruby-on-rails - 在生产环境中覆盖后端 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829726/