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