我想覆盖 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/