Rails 3:如何覆盖gem中的方法

时间:2011-04-08 08:51:03

标签: gem monkeypatching ruby-on-rails-3

我想在gem中的一个方法中添加一些自定义代码。在Rails 2.3.8中,我在config / initializers目录下添加了一个.rb文件,一切都运行良好。

自从搬到Rail3之后,之前正在运行的工作不再适用。我尝试在config / initializers下和/ lib下添加一个mongoid_slug.rb,并在application.rb中自动加载/ lib路径。两者都没用。

在mongoid_slug.rb里面我试过了:

module Mongoid
  module Slug    
     module ClassMethods  
         def find_unique_slug  
             #mycode   
         end  
     end  
  end  
end

Mongoid::Slug::ClassMethods.module_eval do   
  def find_unique_slug  
    #mycode  
  end  
end  

然而,两者都失败了。任何人都可以提供一些关于如何在Rails3中修补宝石的技巧? 谢谢!

1 个答案:

答案 0 :(得分:0)

这对我有用,

module Mongoid
  module Slug    
     module ClassMethods  
         def find_unique_slug  
             #mycode   
         end  
     end  
  end  
end

其他问题,我认为在包含此文件或调用此方法时 应该包括: 包括Abt :: I18n 在ApplicationHelper或其他地方