我有一个 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 目录是否出现在搜索 PATH 中 gem 的 asset 目录之前。如果没有,某些东西可能正在修改您的 Assets 路径。
如果您的资源路径看起来错误,您可以轻松修改它。 (它只是一个字符串数组。)要添加新的最高优先级目录,请尝试将如下内容添加到初始值设定项中:
Rails.application.config.assets.paths.unshift "/some/other/path"
另请尝试删除tmp/cache/assets
并重新启动服务器。
关于ruby-on-rails - 使用本地资源覆盖gem文件资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33179955/