使用本地资产覆盖 gem 文件资产

Using local assets to override gem file assets

我有一个 rails 引擎 gem,里面有 image_x.jpg。我试图通过将它添加到 assets & public 目录来用我在项目中本地拥有的图像覆盖该图像。

然而,

Rails 继续显示来自 gem 文件而不是本地文件的图像。

如果我对 gem 进行 monkeypatch 并删除图像 image_x.jpg,则会出现我本地项目中的图像,但这并不理想。

有没有办法告诉 rails 使用本地项目中的图像而不是 gem 中的图像?

换句话说,有没有办法让本地资产优先于 gem 文件资产?

默认情况下,Rails 应该使用您的本地 image_x.jpg。

要检查 Rails 将搜索资产的顺序,请打开您的控制台并键入:

Rails.application.config.assets.paths

您应该能够验证您的 app/assets 目录出现在搜索路径中 gem 的资产目录之前。如果没有,可能是某些东西正在修改您的资产路径。

如果您的资产路径看起来不对,您可以轻松修改它。 (它只是一个字符串数组。)要添加一个新的最高优先级目录,请尝试将这样的内容添加到初始化程序中:

Rails.application.config.assets.paths.unshift "/some/other/path"

同时尝试删除 tmp/cache/assets 并重新启动您的服务器。