ruby-on-rails - 使用本地资源覆盖gem文件资源

标签 ruby-on-rails rubygems rails-engines

我有一个 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/

相关文章:

ruby-on-rails - rails 3.1 : Better way to expose an engine's helper within the client app

ruby-on-rails - Dockerfile通过Rails自动运行乘客启动

ruby-on-rails - Rails 应用程序中的 guest 用户功能,在 session 中设计 + 存储

ruby-on-rails - Rails 自引用关联加入条件

ruby - 为什么不卸载这个 gem

ruby-on-rails - Gem, rails 的自定义保存方法

ruby - gem 推送结果为 "package metadata is missing"

ruby-on-rails - 在 2 个应用程序之间共享一个 mongoid 模型 - 使用引擎与插件

ruby-on-rails - RoR安装: Run 'bundle install' not working?

ruby-on-rails - 使用 Rails 引擎共享没有命名空间的模型