mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 06:16:50 +00:00
Update for review per maurogeorge feedback
This commit is contained in:
parent
b36cc42f03
commit
d1c44c719d
@ -381,6 +381,10 @@ All serializable resources must pass the ActiveModel::Serializer::Lint::Tests.
|
||||
See the ActiveModelSerializers::Model for a base class that implements the full
|
||||
API for a plain-old Ruby object (PORO).
|
||||
|
||||
## Hooks
|
||||
|
||||
To run a hook when ActiveModelSerializers is loaded, use `ActiveSupport.on_load(:active_model_serializers) do end`
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you find a bug, please report an [Issue](https://github.com/rails-api/active_model_serializers/issues/new).
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
# Instrumentation
|
||||
|
||||
ActiveModelSerializers uses the ActiveSupport::Notification API, which
|
||||
allows for subscribing to events, such as for logging.
|
||||
ActiveModelSerializers uses the
|
||||
[ActiveSupport::Notification API](http://guides.rubyonrails.org/active_support_instrumentation.html#subscribing-to-an-event),
|
||||
which allows for subscribing to events, such as for logging.
|
||||
|
||||
## Events
|
||||
|
||||
@ -17,3 +18,20 @@ Payload (example):
|
||||
adapter: ActiveModel::Serializer::Adapter::Attributes
|
||||
}
|
||||
```
|
||||
|
||||
Subscribing:
|
||||
|
||||
```ruby
|
||||
ActiveSupport::Notifications.subscribe 'render.active_model_serializers' do |name, started, finished, unique_id, data|
|
||||
# whatever
|
||||
end
|
||||
ActiveSupport::Notifications.subscribe 'render.active_model_serializers' do |*args|
|
||||
event = ActiveSupport::Notifications::Event.new(*args)
|
||||
# event.payload
|
||||
# whatever
|
||||
end
|
||||
|
||||
## [LogSubscriber](http://api.rubyonrails.org/classes/ActiveSupport/LogSubscriber.html)
|
||||
|
||||
ActiveModelSerializers includes an `ActiveModelSerializers::LogSubscriber` that attaches to
|
||||
`render.active_model_serializers`.
|
||||
|
||||
@ -31,6 +31,9 @@ module ActionController
|
||||
serializable_resource.serialization_scope ||= serialization_scope
|
||||
serializable_resource.serialization_scope_name = _serialization_scope
|
||||
begin
|
||||
# Necessary to ensure we have an adapter for the serializable resource
|
||||
# after it has been figured.
|
||||
# TODO: This logic should be less opaque and probably moved into the SerializableResource.
|
||||
serializable_resource.tap(&:adapter)
|
||||
rescue ActiveModel::Serializer::CollectionSerializer::NoSerializerError
|
||||
resource
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
require 'active_model'
|
||||
require 'active_support'
|
||||
require 'active_support/tagged_logging'
|
||||
require 'active_support/logger'
|
||||
require 'action_controller'
|
||||
require 'action_controller/railtie'
|
||||
module ActiveModelSerializers
|
||||
|
||||
@ -3,12 +3,13 @@
|
||||
#
|
||||
# https://github.com/rails/rails/blob/280654ef88/activejob/lib/active_job/logging.rb
|
||||
#
|
||||
module ActiveModelSerializers::Logging
|
||||
module ActiveModelSerializers
|
||||
module Logging
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
include ActiveModelSerializers::Callbacks
|
||||
extend NotificationMacro
|
||||
extend Macros
|
||||
instrument_rendering
|
||||
end
|
||||
|
||||
@ -24,8 +25,12 @@ module ActiveModelSerializers::Logging
|
||||
end
|
||||
end
|
||||
|
||||
# Macros that can be used to customize the logging of class or instance methods,
|
||||
# by extending the class or its singleton.
|
||||
#
|
||||
# Adapted from:
|
||||
# https://github.com/rubygems/rubygems/blob/cb28f5e991/lib/rubygems/deprecate.rb
|
||||
#
|
||||
# Provides a single method +notify+ to be used to declare when
|
||||
# something a method notifies, with the argument +callback_name+ of the notification callback.
|
||||
#
|
||||
@ -38,15 +43,15 @@ module ActiveModelSerializers::Logging
|
||||
# # ...
|
||||
# end
|
||||
#
|
||||
# include ActiveModelSerializers::Logging
|
||||
# include ActiveModelSerializers::Logging::Macros
|
||||
# notify :instance_method, :render
|
||||
#
|
||||
# class << self
|
||||
# extend ActiveModelSerializers::Logging::NotificationMacro
|
||||
# extend ActiveModelSerializers::Logging::Macros
|
||||
# notify :klass_method, :render
|
||||
# end
|
||||
# end
|
||||
module NotificationMacro
|
||||
module Macros
|
||||
##
|
||||
# Simple notify method that wraps up +name+
|
||||
# in a dummy method. It notifies on with the +callback_name+ notifier on
|
||||
@ -108,5 +113,6 @@ module ActiveModelSerializers::Logging
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ActiveModelSerializers::Logging::LogSubscriber.attach_to :active_model_serializers
|
||||
|
||||
Loading…
Reference in New Issue
Block a user