1

RailsのgemSimpleFormを使用していますが、私の質問はどのgemにも当てはまると思います。

https://github.com/plataformatec/simple_form

すばらしい機能とカスタマイズがたくさんありますが、もう少し先に進みたいと思っています。たとえば、生成されたマークアップにデフォルトクラスが挿入されていないことを本当に望んでいますが、それでも手動で独自のクラスを挿入できるようにしたいです。gemファイルの行をコメントアウトすることで、いくつかのクラスを削除できることがわかりました。ただし、これは私のプロジェクトの範囲外です。できればすべてのgemをパックすることなく、本番環境にデプロイするときにプロジェクトにとどまるDRYソリューションが必要です。

これはどのgemにも当てはまる一般的な状況だと思います。おそらく、プロジェクトにgemをオーバーライドするカスタムファイルを追加することで、gemを全体的または部分的にオーバーライドできるはずです...しかし、その方法はわかりません。

どんな助けでもいただければ幸いです!ありがとう。

4

1 に答える 1

0

モンキーパッチについて話しているのですか?あなたの宝石がファイルにクラスを持っているとしましょう

# 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の他のメソッドには影響しません。モンキーパッチの出力がgem内の他の何かを壊さないことを確認してください。

于 2010-11-16T23:41:02.193 に答える