Module: DataRedactor::Integrations::Rails

Defined in:
lib/data_redactor/integrations/rails.rb

Overview

Rails ‘config.filter_parameters` adapter. Returns a `Proc` that Rails invokes with `(key, value)` for every leaf in the params tree; we redact the value in place when it is a String.

Examples:

# config/initializers/filter_parameter_logging.rb
require "data_redactor/integrations/rails"
Rails.application.config.filter_parameters += [
  DataRedactor::Integrations::Rails.filter
]

Restricting to specific tags

Rails.application.config.filter_parameters += [
  DataRedactor::Integrations::Rails.filter(only: [:credentials, :financial])
]

Class Method Summary collapse

Class Method Details

.filter(only: nil, except: nil, placeholder: DataRedactor::PLACEHOLDER_DEFAULT) ⇒ Proc

Returns a ‘(key, value)` proc compatible with `config.filter_parameters`.

Parameters:

Returns:

  • (Proc)

    a ‘(key, value)` proc compatible with `config.filter_parameters`



27
28
29
30
31
32
33
34
35
# File 'lib/data_redactor/integrations/rails.rb', line 27

def filter(only: nil, except: nil, placeholder: DataRedactor::PLACEHOLDER_DEFAULT)
  lambda do |_key, value|
    next unless value.is_a?(String)
    # Rails' Parameter Filter mutates the value in place. We can't
    # reassign `value` here, so use String#replace.
    redacted = DataRedactor.redact(value, only: only, except: except, placeholder: placeholder)
    value.replace(redacted) if redacted != value
  end
end