Module: JSONAPI::Instrumentation
- Defined in:
- lib/json_api/support/instrumentation.rb
Class Method Summary collapse
- .build_relationship_payload(resource_type, resource_id, relationship_name, related_type, related_ids) ⇒ Object
- .enabled? ⇒ Boolean
- .notify_relationship(action, resource_type, payload) ⇒ Object
- .relationship_event(action:, resource_type:, resource_id:, relationship_name:, related_ids: nil, related_type: nil) ⇒ Object
- .resource_event(action:, resource_type:, resource_id:, changes: {}) ⇒ Object
Class Method Details
.build_relationship_payload(resource_type, resource_id, relationship_name, related_type, related_ids) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/json_api/support/instrumentation.rb', line 30 def self.build_relationship_payload(resource_type, resource_id, relationship_name, , ) { resource_type:, resource_id:, relationship_name: }.tap do |p| p[:related_type] = if p[:related_ids] = Array() if end end |
.enabled? ⇒ Boolean
5 6 7 |
# File 'lib/json_api/support/instrumentation.rb', line 5 def self.enabled? defined?(Rails) && Rails.respond_to?(:event) && Rails.event.respond_to?(:notify) end |
.notify_relationship(action, resource_type, payload) ⇒ Object
37 38 39 40 41 |
# File 'lib/json_api/support/instrumentation.rb', line 37 def self.notify_relationship(action, resource_type, payload) Rails.event.tagged("jsonapi", "relationship") do Rails.event.notify("jsonapi.#{resource_type}.relationship.#{action}", payload) end end |
.relationship_event(action:, resource_type:, resource_id:, relationship_name:, related_ids: nil, related_type: nil) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/json_api/support/instrumentation.rb', line 22 def self.relationship_event(action:, resource_type:, resource_id:, relationship_name:, related_ids: nil, related_type: nil) return unless enabled? payload = build_relationship_payload(resource_type, resource_id, relationship_name, , ) notify_relationship(action, resource_type, payload) end |
.resource_event(action:, resource_type:, resource_id:, changes: {}) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/json_api/support/instrumentation.rb', line 9 def self.resource_event(action:, resource_type:, resource_id:, changes: {}) return unless enabled? Rails.event.tagged("jsonapi") do Rails.event.notify( "jsonapi.#{resource_type}.#{action}", resource_type:, resource_id:, changes: changes.compact, ) end end |