Module: ConcernsOnRails

Defined in:
lib/concerns_on_rails.rb,
lib/concerns_on_rails/railtie.rb,
lib/concerns_on_rails/version.rb,
lib/concerns_on_rails/encryption.rb,
lib/concerns_on_rails/support/money.rb,
lib/concerns_on_rails/legacy_aliases.rb,
lib/concerns_on_rails/support/masker.rb,
lib/concerns_on_rails/models/hashable.rb,
lib/concerns_on_rails/models/lockable.rb,
lib/concerns_on_rails/models/maskable.rb,
lib/concerns_on_rails/models/sortable.rb,
lib/concerns_on_rails/models/storable.rb,
lib/concerns_on_rails/models/taggable.rb,
lib/concerns_on_rails/models/aliasable.rb,
lib/concerns_on_rails/models/auditable.rb,
lib/concerns_on_rails/models/expirable.rb,
lib/concerns_on_rails/models/sluggable.rb,
lib/concerns_on_rails/models/stateable.rb,
lib/concerns_on_rails/models/searchable.rb,
lib/concerns_on_rails/support/encryptor.rb,
lib/concerns_on_rails/models/activatable.rb,
lib/concerns_on_rails/models/addressable.rb,
lib/concerns_on_rails/models/encryptable.rb,
lib/concerns_on_rails/models/monetizable.rb,
lib/concerns_on_rails/models/publishable.rb,
lib/concerns_on_rails/models/sanitizable.rb,
lib/concerns_on_rails/models/schedulable.rb,
lib/concerns_on_rails/models/tokenizable.rb,
lib/concerns_on_rails/models/normalizable.rb,
lib/concerns_on_rails/models/sequenceable.rb,
lib/concerns_on_rails/controllers/sortable.rb,
lib/concerns_on_rails/support/address_data.rb,
lib/concerns_on_rails/support/column_guard.rb,
lib/concerns_on_rails/support/random_value.rb,
lib/concerns_on_rails/support/scalar_param.rb,
lib/concerns_on_rails/support/unique_retry.rb,
lib/concerns_on_rails/controllers/cacheable.rb,
lib/concerns_on_rails/models/soft_deletable.rb,
lib/concerns_on_rails/controllers/filterable.rb,
lib/concerns_on_rails/controllers/includable.rb,
lib/concerns_on_rails/support/error_envelope.rb,
lib/concerns_on_rails/controllers/localizable.rb,
lib/concerns_on_rails/controllers/paginatable.rb,
lib/concerns_on_rails/controllers/respondable.rb,
lib/concerns_on_rails/support/html_sanitizers.rb,
lib/concerns_on_rails/controllers/authorizable.rb,
lib/concerns_on_rails/controllers/deprecatable.rb,
lib/concerns_on_rails/controllers/throttleable.rb,
lib/concerns_on_rails/controllers/timezoneable.rb,
lib/concerns_on_rails/models/counter_cacheable.rb,
lib/concerns_on_rails/controllers/idempotentable.rb,
lib/concerns_on_rails/controllers/secure_headable.rb,
lib/concerns_on_rails/support/sequence_calculator.rb,
lib/concerns_on_rails/controllers/error_handleable.rb,
lib/concerns_on_rails/controllers/cursor_paginatable.rb,
lib/concerns_on_rails/controllers/webhook_verifiable.rb,
lib/concerns_on_rails/support/filter_parameter_registry.rb

Defined Under Namespace

Modules: Controllers, Encryption, Models, Support Classes: Railtie

Constant Summary collapse

VERSION =
"1.22.0".freeze
Sluggable =

Backwards-compatibility aliases for pre-1.6 module paths. Existing apps doing include ConcernsOnRails::Sluggable continue to work; new code is encouraged to use the namespaced form: ConcernsOnRails::Models::Sluggable.

Models::Sluggable
Sortable =
Models::Sortable
Publishable =
Models::Publishable
SoftDeletable =
Models::SoftDeletable
Hashable =
Models::Hashable
Schedulable =
Models::Schedulable
Expirable =
Models::Expirable
Normalizable =
Models::Normalizable
Searchable =
Models::Searchable
Activatable =
Models::Activatable
Tokenizable =
Models::Tokenizable
Stateable =
Models::Stateable
Addressable =
Models::Addressable
Sequenceable =
Models::Sequenceable
Taggable =
Models::Taggable
Sanitizable =
Models::Sanitizable
Maskable =
Models::Maskable
Monetizable =
Models::Monetizable
Auditable =
Models::Auditable
Lockable =
Models::Lockable
Aliasable =
Models::Aliasable
Storable =
Models::Storable
CounterCacheable =
Models::CounterCacheable
Encryptable =
Models::Encryptable

Class Method Summary collapse

Class Method Details

.configure_encryption {|encryption| ... } ⇒ Object

Yields:



39
40
41
42
43
44
45
# File 'lib/concerns_on_rails.rb', line 39

def self.configure_encryption
  yield encryption if block_given?
  # Purge PBKDF2-derived keys built from the previous configuration; purely
  # memory hygiene (a changed key/salt is a different cache entry anyway).
  Support::Encryptor.reset_key_cache!
  encryption
end

.deprecatorObject

Gem-wide deprecator backing alias_association ..., deprecated: (and any future deprecation surface). A dedicated instance — not the global ActiveSupport::Deprecation singleton, whose direct use is itself deprecated on Rails 7.1+. Default behavior prints to $stderr; Rails apps can re-route it (e.g. config.active_support.deprecation style):

ConcernsOnRails.deprecator.behavior = :log


23
24
25
26
27
# File 'lib/concerns_on_rails.rb', line 23

def self.deprecator
  @deprecator || @config_mutex.synchronize do
    @deprecator ||= ActiveSupport::Deprecation.new("2.0", "concerns_on_rails")
  end
end

.encryptionObject

Gem-wide encryption configuration backing Models::Encryptable. Memoized like deprecator; the host app supplies the key (see ConcernsOnRails::Encryption):

ConcernsOnRails.configure_encryption do |c|
c.key = -> { Rails.application.credentials.dig(:encryption, :key) }
end


35
36
37
# File 'lib/concerns_on_rails.rb', line 35

def self.encryption
  @encryption || @config_mutex.synchronize { @encryption ||= Encryption::Config.new }
end

.filter_parameter_registryObject

Live registry of sensitive field names (populated by Models::Encryptable) consulted at filter time by the proc ConcernsOnRails::Railtie appends to config.filter_parameters.



50
51
52
53
54
# File 'lib/concerns_on_rails.rb', line 50

def self.filter_parameter_registry
  @filter_parameter_registry || @config_mutex.synchronize do
    @filter_parameter_registry ||= Support::FilterParameterRegistry.new
  end
end