覆盖生产环境中的后端资产

unc*_*ton 5 assets ruby-on-rails refinerycms ruby-on-rails-3 sprockets

我正在开发一个需要稍微改变Refinery的WYMEditor行为的项目.这可以通过根据自己的需要覆盖jquery.refinery.wymeditor.js使用rake refinery:override和编辑来轻松完成,这在开发环境中工作正常.

但是,在生产方面,忽略了覆盖.也就是说,编译后的资产只包含jquery.refinery.wymeditor.jsbundle,并且直接编辑该文件可能会产生预期的效果,但这不是它应该完成的方式.

奇怪的是,只有在试图覆盖与后端相关的资产时,问题显然才会显现出来.

知道我正在使用炼油厂边缘可能会有用.

任何帮助赞赏.

unc*_*ton 3

所以我成功地击败了它。首先要提到的是,如果不研究 Refinery 源代码,这是不可能的。

正如我在评论中已经写过的那样,问题是我试图覆盖一个资产(在我的例子中是wymeditor/jquery.refinery.wymeditor.js),该资产没有直接包含在视图中,但在另一个资产中引用了,这是从宝石中取出的。由于 sprocket 对 Refinery 的覆盖一无所知,因此它也通过相对路径获取引用的资源,即来自 gem(因此未修改)。所以,在我的例子中,解决方案是覆盖refinery/wymeditor.js,一切都非常顺利。

如果您需要更改除 WYMEditor 之外的任何其他后端脚本,您很可能必须覆盖refinery/refinery.js,其中除了您需要修改的脚本之外,还包括所有其他后端脚本。

不过,还有一个大问题。通过所有这些覆盖,我使任何更新都非常容易出错,因为有些文件会更新,有些则不会。它本来可以通过覆盖所有内容来避免,但这实际上意味着根本没有更新。