Ich entdecke immer mal wieder kleine Helferlein, die mir bis dato noch nicht untergekommen waren. In der heutigen Episode: alias_method_chain

Die Methode wurde mit Revision 4276 in Rails eingeführt und dient dazu eine oft benutze Kombination von alias Aufrufen zu vereinfachen.

1
2
3
4
5
6
7
8
9
10
11

  def example
  end

  def example_with_put
    puts 'ping'
    example_without_put
  end

  alias_method :example_without_put, :example
  alias_method :example, :example_with_put
Was passiert hier?

Wir erstellen ein Alias meiner alten Methode example und leiten alle Aufrufe an example_with_put weiter. Diese Methode wiederum tut was Sinnvolles und ruf dann meine originale example Methode via _example_without_put auf. Eigentlich nichts besonderes..

Da dieser Trick recht oft verwendet wird, erhielt Rails mit der Rev 4276 die Methode alias_method_chain, die dieses “Doppel-Aliasing” übernimmt. Ich kann die beiden alias_method Aufrufe auch folgendermaßen erstellen:

1
2

  alias_method_chain :example, :put

Mehr Information finden sich im Code von Rails.

Leave a Reply