0

ファイル document_presenter.rb で定義されているメソッドのいくつかをオーバーライドしたいと考えています。これどうやってするの?このモジュールは、Blacklight gem の「lib」ディレクトリ内で定義されています。

これを行う簡単な方法はありますか?私は Ruby と Rails にかなり慣れていない (純粋な Java のバックグラウンドから来ている) ので、これはちょっと難しいです。

ありがとう。

4

1 に答える 1

2

Backlight gem のメソッドにモンキー パッチを適用することについて話しているようです。モンキー パッチについて詳しく説明しているこの投稿をお読みになることをお勧めします。

Ruby では、class キーワードを使用していつでも既存のクラスを開き、def キーワードを使用して元のメソッドを再定義できます。

class DocumentPresenter
  def method_you_want_to_override
    # Your code here.
  end
end

たとえば、上記のコードを lib フォルダーに入れることができます。

lib/document_presenter.rb

libフォルダー内のファイルの自動読み込みに関するこの回答を参照してください。

これが完了したら、DocumentPresenter クラスのインスタンスにモンキー パッチを適用したメソッドを呼び出すたびに、代わりに Ruby インタープリターがコードを実行します。 リンク先のブログ投稿によると、危険で予測不可能な結果が生じる可能性があるため、これはお勧めしません。

Ruby 2 では、Refinementsを使用することをお勧めします。

于 2015-11-12T14:16:38.330 に答える