class AuditLoggable::Sweeper

Constants

STORED_DATA

Attributes

current_user_methods[R]

Public Class Methods

new(current_user_methods: %i[current_user]) click to toggle source
# File lib/audit_loggable/sweeper.rb, line 11
def initialize(current_user_methods: %i[current_user])
  @current_user_methods = ::Array.wrap(current_user_methods).map(&:to_sym)
end

Public Instance Methods

around(controller, &block) click to toggle source
# File lib/audit_loggable/sweeper.rb, line 15
def around(controller, &block)
  Store.set({ current_controller: controller }) do
    Store.set(
      STORED_DATA
        .each_pair
        .with_object({}) { |(k, m), h| h[k] = __send__(m) },
      &block
    )
  end
end

Private Instance Methods

controller() click to toggle source
# File lib/audit_loggable/sweeper.rb, line 42
def controller
  Store.current_controller
end
current_user() click to toggle source
# File lib/audit_loggable/sweeper.rb, line 34
def current_user
  lambda do
    current_user_methods
      .lazy.map { |m| controller.__send__(m) if controller.respond_to?(m, true) }
      .find(&:present?)
  end
end