ruby-on-rails - 如何覆盖lib目录中的rails引擎文件?

标签 ruby-on-rails ruby-on-rails-3 rubygems overwrite rails-engines

我想覆盖 Rails 引擎的文件,但该文件位于该引擎的 lib/rails 目录中。当我获取相同的文件并将其放入 lib/rails 目录中时,它不会覆盖该文件。似乎 Rails 处理 lib 目录的方式与 app 目录中的文件不同。

此外,我无法将此文件放入初始化程序文件夹 ( per this solution ),因为文件名与所需的现有文件相同。这样做的正确方法是什么?

最佳答案

我发现解决这个问题的最好方法是添加

require "#{Rails.root}/lib/path/to/file"

位于config/application.rb末尾。污染很小,并且达到与覆盖相同的效果。

目前在 Spree 项目中使用它来覆盖 lib/spree_samples.rb

编辑

在此答案中找到了更好的方法: Overloading lib files from gem mounted as engine

本质上,将您想要覆盖的文件放在 config/initializers 目录中。

关于ruby-on-rails - 如何覆盖lib目录中的rails引擎文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749503/

相关文章:

ruby-on-rails - 对 Rails 中的嵌套表单字段进行排序

ruby-on-rails - Ruby Rails - 查询很快,直到我打印输出?

javascript - Rails Ajax 渲染带有 id 的部分

ruby-on-rails-3 - application.html.erb 中的 Facebook OG 元标记

ruby - 修复失败的 ruby​​ gem 安装

ruby - Net :Http and third-party library for making API calls in Rails/Ruby?有什么区别

ruby-on-rails - 无法部署:Gem::LoadError:为数据库适配器指定 'postgresql',但未加载 gem

javascript - 得到一个未终止的字符串文字错误..我可以让它通过,但无法弄清楚为什么

ruby-on-rails - Resque worker 默默地死去

ruby-on-rails - 可以安装gem ruby​​-debug,但是rails server找不到