module CryptKeeper::LogSubscriber::PostgresPgp

Constants

FILTER

Public Instance Methods

sql(event) click to toggle source

Public: Prevents sensitive data from being logged

event - An ActiveSupport::Notifications::Event

Returns a boolean.

Calls superclass method
# File lib/crypt_keeper/log_subscriber/postgres_pgp.rb, line 14
def sql(event)
  payload = crypt_keeper_payload_parse(event.payload[:sql])
  event.payload[:sql] = crypt_keeper_filter_postgres_log(payload)
  super(event)
end

Private Instance Methods

crypt_keeper_filter_postgres_log(payload) click to toggle source

Private: Filters the payload.

payload - the payload string

Returns a string.

# File lib/crypt_keeper/log_subscriber/postgres_pgp.rb, line 37
def crypt_keeper_filter_postgres_log(payload)
  payload.gsub(FILTER) do |_|
    "#{$~[:operation]}([FILTERED])"
  end
end
crypt_keeper_payload_parse(payload) click to toggle source

Private: Parses the payload to UTF.

payload - the payload string

Returns a string.

# File lib/crypt_keeper/log_subscriber/postgres_pgp.rb, line 27
def crypt_keeper_payload_parse(payload)
  payload.encode('UTF-8', 'binary',
    invalid: :replace, undef: :replace, replace: '')
end