Sha256: 49ec14644f860a82cfedbd4689d4087d6002857f1439224a54a48271a7ca87e2

Contents?: true

Size: 1.63 KB

Versions: 7

Compression:

Stored size: 1.63 KB

Contents

module Skylight
  module Probes
    module ActiveModelSerializers
      module Instrumentation
        def as_json(*)
          payload = { serializer: self.class }
          ActiveSupport::Notifications.instrument("render.active_model_serializers", payload) { super }
        end
      end

      class Probe
        def install
          version = nil

          # File moved location between version
          %w[serializer serializers].each do |dir|
            require "active_model/#{dir}/version"
          rescue LoadError # rubocop:disable Lint/SuppressedException
          end

          if Gem.loaded_specs["active_model_serializers"]
            version = Gem.loaded_specs["active_model_serializers"].version
          end

          if !version || version < Gem::Version.new("0.5.0")
            Skylight.error "Instrumention is only available for ActiveModelSerializers version 0.5.0 and greater."
            return
          end

          # We don't actually support the RCs correctly, requires
          # a release after 0.10.0.rc3
          if version >= Gem::Version.new("0.10.0.rc1")
            # AS::N is built in to newer versions
            return
          end

          # End users could override as_json without calling super, but it's likely safer
          # than overriding serializable_array/hash/object.

          [::ActiveModel::Serializer, ::ActiveModel::ArraySerializer].each do |klass|
            klass.prepend(Instrumentation)
          end
        end
      end
    end

    register(:active_model_serializers, "ActiveModel::Serializer", "active_model/serializer",
             ActiveModelSerializers::Probe.new)
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
skylight-5.1.0.beta lib/skylight/probes/active_model_serializers.rb
skylight-5.0.1 lib/skylight/probes/active_model_serializers.rb
skylight-5.0.0 lib/skylight/probes/active_model_serializers.rb
skylight-5.0.0.beta5 lib/skylight/probes/active_model_serializers.rb
skylight-5.0.0.beta4 lib/skylight/probes/active_model_serializers.rb
skylight-5.0.0.beta3 lib/skylight/probes/active_model_serializers.rb
skylight-5.0.0.beta2 lib/skylight/probes/active_model_serializers.rb