module Pundit::Logger::LogControllerPolicySummary

Once a controller action completes, the names of the Pundit policies invoked are logged to the configured logger.

Intended for mixing into Rails controllers

Functionality controlled by Pundit::Logger.log_controller_policy_summary; disable by setting that to false.

Private Instance Methods

invoked_policy_names() click to toggle source
# File lib/pundit_logger/log_controller_policy_summary.rb, line 34
def invoked_policy_names
  return [] unless respond_to?(:policies)
  policies.map do |_, policy_obj|
    policy_obj.class.name
  end
end
invoked_policy_scope_names() click to toggle source
# File lib/pundit_logger/log_controller_policy_summary.rb, line 41
def invoked_policy_scope_names
  Pundit.invoked_policy_scope_names.to_a
end
log_policies_invoked() click to toggle source
# File lib/pundit_logger/log_controller_policy_summary.rb, line 22
def log_policies_invoked
  policy_names = invoked_policy_names +
                   invoked_policy_scope_names
  message = if policy_names.empty?
              'None'
            else
              policy_names.uniq.sort.join(', ')
            end
  Pundit::Logger.log 'Controller Action Policies ' \
                     "Invoked: #{message}"
end