fiedl/wingolfsplattform — pull request #41 by jbx26 (2014-05-24 21:04:35+00:00)
Title: Spec testet, ob Cache gelöscht wird

Wozu?
* Es ist ein Anfang, um dafür zu sorgen, das die vorhandenen (und zukünftige) Cache-Methoden immer das gleiche Ergebnis zurück liefern, wie die gecachte Methode.
Am Beispiel der Aktivitätszahl bei einem Benutzer `User#aktivitaetszahl`wird im Spec geprüft, ob durch das Hinzufügen des Benutzers zu einer Gruppe oder dem invalidieren einer bestehenden Gruppenmitgliedschaft die Methode `User#cached_aktivitaetszahl` das richtige Ergebnis liefert.

Wie?
Weil die Callbacks für `before_destroy` und `after_commit` für `DagLink`nicht zuverlässig funktionieren, habe ich die Methode `ActiveRecord::Base#save` in `DagLink`und `UserGroupMembership` überschrieben. In `StatusGroupMembership` habe ich die Methode nicht überschrieben, weil die Klasse noch keine eigenen Cache-Methoden hat. In der `save`-Methode wird die `save`-Methode von ActiveRecord::Base aufgerufen und auch dessen Ergebnis zurückgeliefert. Das hat den Vorteil, dass ansonsten das Verhalten nicht geändert wird. Außerdem wird der eigene Cache und des 'DagLink#descendant'-Objekts gelöscht.

Das Überschreiben der `save`-Methode erfolgt in `your_platform`.
Das Überschreiben der `delete_cache`-Methode erfolgt ggf. in der `wingolfsplattform`.
Die Methode `delete_cache`heißt in der Vererbungshierarchie immer anders, damit sie problemlos durch die `wingolfsplattform`überschrieben werden kann.