自定义/覆盖Rails SimpleForm Gem

我正在使用Rails gem SimpleForm,但我认为我的问题可能适用于任何gem。 https://github.com/plataformatec/simple_form 它有很多很棒的功能和定制,但我希望更进一步。例如,我真的希望生成的标记没有插入默认类,但我仍然希望能够手动插入我自己的类。我发现我可以通过在gem文件中注释掉行来删除一些类。然而,这不属于我的项目 - 我想要一个DRY解决方案,当我部署到生产时,它将与我的项目保持一致,最好不需要打包我的所有宝石。 我想这是一个常见的情况,可以应用于任何宝石,我应该能够完全或部分覆盖任何宝石可能通过在我的项目中添加覆盖宝石的海关文件......但我不知道如何。 任何帮助,将不胜感激!谢谢。     
已邀请:
你在谈论猴子补丁吗?假设您的gem在文件中有一个类
# simple_form_gem/lib/some_file.rb
class A
  def some_method
    puts 'A'
  end
end
如果要更改#some_method的输出,则可以创建初始化文件并执行
# config/initializers/my_monkey_patch_for_simple_form_gem.rb
class A
  def some_method
    puts 'duck punching'
  end
end
你的猴子补丁只会影响A#some_method,而不会影响A中的其他方法。只需确保你的猴子补丁的输出不会破坏宝石中的其他东西。     

要回复问题请先登录注册