lib/audited/sweeper.rb in audited-4.3.0 vs lib/audited/sweeper.rb in audited-4.4.0

- old
+ new

@@ -1,60 +1,49 @@ -require "rails/observers/activerecord/active_record" -require "rails/observers/action_controller/caching" - module Audited - class Sweeper < ActionController::Caching::Sweeper - observe Audited::Audit + class Sweeper + STORED_DATA = { + current_remote_address: :remote_ip, + current_request_uuid: :request_uuid, + current_user: :current_user + } + delegate :store, to: ::Audited + def around(controller) self.controller = controller + STORED_DATA.each { |k,m| store[k] = send(m) } yield ensure self.controller = nil + STORED_DATA.keys.each { |k| store.delete(k) } end - def before_create(audit) - audit.user ||= current_user - audit.remote_address = controller.try(:request).try(:remote_ip) - audit.request_uuid = request_uuid if request_uuid - end - def current_user controller.send(Audited.current_user_method) if controller.respond_to?(Audited.current_user_method, true) end + def remote_ip + controller.try(:request).try(:remote_ip) + end + def request_uuid controller.try(:request).try(:uuid) 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] + store[:current_controller] end def controller=(value) - ::Audited.store[:current_controller] = value + store[:current_controller] = value end end end ActiveSupport.on_load(:action_controller) do if defined?(ActionController::Base) - ActionController::Base.around_action Audited::Sweeper.instance + ActionController::Base.around_action Audited::Sweeper.new end if defined?(ActionController::API) - ActionController::API.around_action Audited::Sweeper.instance + ActionController::API.around_action Audited::Sweeper.new end end