module AuditLog

Constants

VERSION

Public Class Methods

action_options() click to toggle source

Get I18n action name options for select

# File lib/audit-log.rb, line 57
def action_options
  I18n.t('audit_log.action').map { |k, v| [v, k.to_s] }
end
audit!(action, record = nil, payload: nil, user: nil, request: nil) click to toggle source

Create an audit log

AuditLog.audit!(:edit_account, @account, payload: account_params, user: current_user)

# File lib/audit-log.rb, line 29
def audit!(action, record = nil, payload: nil, user: nil, request: nil)
  ActiveSupport::Notifications.instrument('audit.audit_log', action: action) do
    request_info = {}
    if request
      request_info = {
        request_id: request.request_id,
        ip: request.remote_ip,
        url: request.url,
        user_agent: request.user_agent
      }
    end

    # Set nil if record is a new_record, do this for avoid create record.
    record = nil if record&.new_record?

    Rails.logger.silence do
      AuditLog::Log.create!(
        action: action,
        record: record,
        payload: (payload || {}).to_h.deep_stringify_keys,
        user: user,
        request: request_info.deep_stringify_keys
      )
    end
  end
end
config() click to toggle source
# File lib/audit-log.rb, line 12
def config
  return @config if defined?(@config)

  @config = Configuration.new
  @config.user_class = 'User'
  @config.current_user_method = 'current_user'
  @config.user_name_method = 'name'
  @config
end
configure(&block) click to toggle source
# File lib/audit-log.rb, line 22
def configure(&block)
  config.instance_exec(&block)
end