]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/trace_sweeper.rb
Add some caching for trace views.
[rails.git] / app / models / trace_sweeper.rb
diff --git a/app/models/trace_sweeper.rb b/app/models/trace_sweeper.rb
new file mode 100644 (file)
index 0000000..52780f9
--- /dev/null
@@ -0,0 +1,28 @@
+class TraceSweeper < ActionController::Caching::Sweeper
+  observe Trace
+
+  def after_create(record)
+    expire_cache_for(record)
+  end
+
+  def after_update(record)
+    expire_cache_for(record)
+  end
+
+  def after_destroy(record)
+    expire_cache_for(record)
+  end
+
+private
+
+  def expire_cache_for(record)
+    expire_action(:controller => 'trace', :action => 'view', :id => record.id)
+    expire_action(:controller => 'trace', :action => 'view', :display_name => record.user.display_name, :id => record.id)
+
+    expire_action(:controller => 'trace', :action => 'list', :display_name => nil, :tag => nil)
+    expire_action(:controller => 'trace', :action => 'list', :display_name => record.user.display_name, :tag => nil)
+
+    expire_action(:controller => 'trace', :action => 'georss', :display_name => nil, :tag => nil)
+    expire_action(:controller => 'trace', :action => 'georss', :display_name => record.user.display_name, :tag => nil)
+  end
+end