module Weasel::Auditable
Public Instance Methods
audit() { || ... }
click to toggle source
# File lib/weasel/concerns/auditable.rb, line 7 def audit begin yield ensure return unless actor.present? Weasel::EventsWorker.perform_async(actor.class.name, actor.id, request_data) end end
Private Instance Methods
actor()
click to toggle source
# File lib/weasel/concerns/auditable.rb, line 19 def actor return current_user if defined?(current_user) return current_admin if defined?(current_admin) end
geo_ip_information()
click to toggle source
# File lib/weasel/concerns/auditable.rb, line 43 def geo_ip_information info = geo_service.lookup(request.remote_ip) info.to_hash end
geo_service()
click to toggle source
# File lib/weasel/concerns/auditable.rb, line 49 def geo_service @@maxmind ||= ::MaxMindDB.new( Rails.root.join('tmp', 'GeoLite2-City.mmdb')) end
request_data()
click to toggle source
# File lib/weasel/concerns/auditable.rb, line 24 def request_data parameters = if request.respond_to?(:filtered_parameters) request.filtered_parameters else request.params end rails_action = "#{parameters[:controller]}:#{parameters[:action]}" rails_parameters = parameters.except(:controller, :action) { action: rails_action, params: rails_parameters, remote_ip: request.remote_ip, geo_ip_information: geo_ip_information, user_agent: request.user_agent } end