Auch wenn es vielen von vorn herein klar ist, mir war es nicht sofort klar :)
Das tolle Memoizable in Rails 2.2 macht das Caching von Methoden einfacher. Ich bin dabei auf eine Frage gestoßen:
Wie lösche ich den Cache?
Als ich mir den Quellcode von Memoizable angeschaut habe, dachte ich auf den ersten Blick, dass memoize_all ALLE Methoden einer Klasse memoizen würde und unmemoize_all alles wieder deaktiviert.
Nun, tatsächlich löscht unmemoize_all nur den gesamten Cache und er wird automatisch mit jedem Aufruf einer Methode Stück für Stück wieder aufgebaut. Wenn man also z. B. eine Änderung vornimmt, sollte man unmemoize_all ausführen.
memoize_all hingegen, führt alle gecachten Methoden auf einmal aus (!) und speichert die Ergebnisse im Cache. Aber das kann doch nicht sein, oder? Kann mir das hier mal jmd. erklären :)
Ähnliche Posts:
»
FINALLY! RailsICalendar ical ics publish with ruby on rails
Nachdem ich jetzt mehrere Stunden nicht verstanden habe, wieso meine Rails Applikation nur einen Klick lang funktioniert, möchte ich euch dran teil haben lassen. Ich habe mehrere Libraries und Plugins die alle meine Models erweitern und dachte schon es läge daran, dass immer dieser Fehler auftauchte:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.include?
Recherche brachte mich hier her:
http://rails.lighthouseapp.com/projects/8994/tickets/1339
Das ganze lag nur daran, dass in Rails 2.2 ein Bug ist, der einen ein ActiveRecord Model nicht in eine Konstakte packen lässt!
Ich hatte eine Config-Datei die
1
| MEINMODEL = MeinModelName |
machte und später im Controller dann
Und das darf man nicht :) Jedenfalls noch nicht.
Ähnliche Posts:
»
XML Sitemap Generator for Rails»
Funkenrailsdav: Webdav with Rails e.g. for ical»
MCV Ruby on Rails – was gehört wohin?»
funkensturm. | Blog
Kommentare