我正在使用Rails Gem Simpleform,但我认为我的问题可能适用于任何宝石。

https://github.com/plataformatec/simple_form

它具有许多出色的功能和自定义,但我希望进一步走。例如,我真的希望生成的标记没有插入其中的默认类,但是我仍然喜欢手动插入自己的能力。我发现我可以通过评论宝石文件中的行来删除一些类。但是,这不在我的项目之外 - 我想要一个干燥的解决方案,该解决方案将在我部署到生产时留在我的项目中,最好无需打包所有的宝石。

我想这是一种常见的情况,可以适用于任何宝石,我应该能够通过在我的项目中添加覆盖宝石的海关文件来完全或部分地覆盖任何宝石...但是我不确定如何。

任何帮助,将不胜感激!谢谢。

有帮助吗?

解决方案

你在说 猴子补丁?说您的宝石在文件中有一堂课

# 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

您的猴子补丁只会影响#some_method,而不是A中的其他方法。只需确保猴子补丁的输出不会破坏宝石中的其他内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top