2

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

此外,我不能将此文件放在初始化程序文件夹中(根据此解决方案),因为文件名与所需的现有文件相同。这样做的正确方法是什么?

4

1 回答 1

2

我发现解决此问题的最佳方法是添加

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目录中。

于 2013-07-13T02:33:03.707 回答