Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Problem with sweepers #1

Open
MartinKoerner opened this Issue · 1 comment

1 participant

@MartinKoerner

Hi,

I discovered this error with ActiveScaffold:
If you have sweepers activated, you will get a NoMethodError, because Sweepers after action is called twice.
First time, it sets self.controller = nil, so second time it fails to get controller_name.

This behaviour is mentioned in http://dev.rubyonrails.org/ticket/6199, but since components were removed from rails it was never fixed there...

@MartinKoerner

Fixed it with following monkey patch (I changed the suggested patch a little bit):

module ActionController
  module Caching
    class Sweeper < ActiveRecord::Observer
      attr_accessor :controller

      def initialize
        @controller_stack = []
        super
      end

      def before(controller)
        @controller_stack << controller
        self.controller = controller
        callback(:before) if controller.perform_caching
      end

      def after(controller)
        callback(:after) if controller.perform_caching
        @controller_stack.pop
        self.controller = @controller_stack.last
      end
    end
  end
end

So all Sweepers are saving all calling controllers instead of only one...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.