123456789_123456789_123456789_123456789_123456789_

Module: ActiveSupport::EventReporter::JSONEncoder

Relationships & Source Files
Defined in: activesupport/lib/active_support/event_reporter/json_encoder.rb

Overview

::ActiveSupport::JSON encoder for serializing events to ::ActiveSupport::JSON format.

event = { name: "user_created", payload: { id: 123 }, tags: { api: true } }
ActiveSupport::EventReporter::JSONEncoder.encode(event)
# => {
#      "name": "user_created",
#      "payload": {
#        "id": 123
#      },
#      "tags": {
#        "api": true
#      },
#      "context": {}
#    }

Schematized events and tags MUST respond to #to_h to be serialized.

event = { name: "UserCreatedEvent", payload: #<UserCreatedEvent:0x111>, tags: { "GraphqlTag": #<GraphqlTag:0x111> } }
ActiveSupport::EventReporter::JSONEncoder.encode(event)
# => {
#      "name": "UserCreatedEvent",
#      "payload": {
#        "id": 123
#      },
#      "tags": {
#        "GraphqlTag": {
#          "operation_name": "user_created",
#          "operation_type": "mutation"
#        }
#      },
#      "context": {}
#    }

Class Method Summary

Class Method Details

.encode(event)

[ GitHub ]

  
# File 'activesupport/lib/active_support/event_reporter/json_encoder.rb', line 41

def encode(event)
  event[:payload] = event[:payload].to_h
  event[:tags] = event[:tags].transform_values do |value|
    value.respond_to?(:to_h) ? value.to_h : value
  end
  ::JSON.generate(event)
end