Class: Textus::Store::Events
- Inherits:
-
Object
- Object
- Textus::Store::Events
- Defined in:
- lib/textus/store/events.rb
Constant Summary collapse
- HOOK_TIMEOUT_SECONDS =
2
Instance Method Summary collapse
- #call(event, **kwargs) ⇒ Object
-
#initialize(store) ⇒ Events
constructor
A new instance of Events.
Constructor Details
#initialize(store) ⇒ Events
Returns a new instance of Events.
8 9 10 |
# File 'lib/textus/store/events.rb', line 8 def initialize(store) @store = store end |
Instance Method Details
#call(event, **kwargs) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/textus/store/events.rb', line 12 def call(event, **kwargs) view = StoreView.new(@store) @store.registry.hooks(event).each do |entry| name = entry[:name] Timeout.timeout(HOOK_TIMEOUT_SECONDS) { entry[:callable].call(store: view, **kwargs) } rescue StandardError => e extras = { "event" => event.to_s, "hook" => name.to_s, "error" => "#{e.class}: #{e.}" } extras["target_key"] = kwargs[:target_key] if kwargs.key?(:target_key) extras["pending_key"] = kwargs[:pending_key] if kwargs.key?(:pending_key) @store.audit_log.append( role: "script", verb: "event_error", key: kwargs[:key] || kwargs[:target_key] || kwargs[:pending_key] || "-", etag_before: nil, etag_after: nil, extras: extras ) end end |