Class: Funes::EventMetainformation
- Inherits:
-
ActiveSupport::CurrentAttributes
- Object
- ActiveSupport::CurrentAttributes
- Funes::EventMetainformation
- Includes:
- ActiveModel::Validations
- Defined in:
- app/models/funes/event_metainformation.rb
Overview
Request-scoped metadata storage for events.
EventMetainformation provides thread-isolated attribute storage for contextual data that should be attached to events, such as the acting user, controller action, or application version. It extends ActiveSupport::CurrentAttributes for automatic request isolation and includes ActiveModel::Validations for optional validation rules.
## Configuration
Attributes are defined via the array configuration, and validations via a block DSL:
Funes.configure do |config|
config. = [:user_id, :action, :git_version]
config. do
validates :user_id, presence: true
validates :action, format: { with: /\A\w+#\w+\z/ }
end
end
## Supported Validators
All standard ActiveModel validators are supported:
-
presence
-
format (with regex)
-
length (minimum, maximum, is, in)
-
numericality
-
inclusion / exclusion
-
custom validators
## Usage
Set values in a controller concern:
Funes::EventMetainformation.user_id = current_user.id
Funes::EventMetainformation.action = "#{controller_name}##{action_name}"
Check validity (when validations are configured):
Funes::EventMetainformation.valid?
Funes::EventMetainformation.errors.
Class Method Summary collapse
-
.setup_attributes! ⇒ void
Sets up attributes and validations from configuration.
Class Method Details
.setup_attributes! ⇒ void
This method returns an undefined value.
Sets up attributes and validations from configuration.
This method is called during Rails initialization. It:
-
Defines attributes from the configuration array
-
Applies validations from the DSL block (if present)
54 55 56 57 58 59 60 61 62 |
# File 'app/models/funes/event_metainformation.rb', line 54 def setup_attributes! configuration = Funes.configuration configuration..each do |attr_name| attribute attr_name end apply_validations_from_builder(configuration.) end |