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

时间:2012-07-31 21:48:27

标签: ruby-on-rails ruby-on-rails-3 gem overwrite rails-engines

我想覆盖rails引擎的文件,但该文件位于该引擎的lib / rails目录中。当我将相同的文件放在我的lib / rails目录中时,它不会覆盖该文件。看起来像rails处理lib目录的方式与app目录中的文件不同。

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

1 个答案:

答案 0 :(得分:1)

我找到解决此问题的最佳方法是添加

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