Sha256: df6e1826148cefa695c09637ddb1bd3d1754de0e27a509980255e52fec586a13
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
require "rails/observers/activerecord/active_record" require "rails/observers/action_controller/caching" module Audited class Sweeper < ActionController::Caching::Sweeper observe Audited.audit_class attr_accessor :controller def before(controller) self.controller = controller true end def after(controller) self.controller = nil end def before_create(audit) audit.user ||= current_user audit.remote_address = controller.try(:request).try(:ip) end def current_user controller.send(Audited.current_user_method) if controller.respond_to?(Audited.current_user_method, true) end def add_observer!(klass) super define_callback(klass) end def define_callback(klass) observer = self callback_meth = :"_notify_audited_sweeper" klass.send(:define_method, callback_meth) do observer.update(:before_create, self) end klass.send(:before_create, callback_meth) end def controller ::Audited.store[:current_controller] end def controller=(value) ::Audited.store[:current_controller] = value end end end if defined?(ActionController) and defined?(ActionController::Base) # Create dynamic subclass of Audited::Sweeper otherwise rspec will # fail with both ActiveRecord and MongoMapper tests as there will be # around_filter collision sweeper_class = Class.new(Audited::Sweeper) do def self.name "#{Audited.audit_class}::Sweeper" end end ActionController::Base.class_eval do around_filter sweeper_class.instance end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
audited-4.0.0.rc1 | lib/audited/sweeper.rb |