Sha256: 04caf658f5d5deedb78e2e9d008a10fee7a7ce47175ab2f3dbff9dd4490f44fb
Contents?: true
Size: 1.36 KB
Versions: 12
Compression:
Stored size: 1.36 KB
Contents
require 'active_support/callbacks' module JSONAPI module Callbacks def self.included(base) base.class_eval do include ActiveSupport::Callbacks base.extend ClassMethods end end module ClassMethods def define_jsonapi_resources_callbacks(*callbacks) options = callbacks.extract_options! options = { only: [:before, :around, :after] }.merge!(options) types = Array(options.delete(:only)) callbacks.each do |callback| define_callbacks(callback, options) types.each do |type| send("_define_#{type}_callback", self, callback) end end end private def _define_before_callback(klass, callback) #:nodoc: klass.define_singleton_method("before_#{callback}") do |*args, &block| set_callback(:"#{callback}", :before, *args, &block) end end def _define_around_callback(klass, callback) #:nodoc: klass.define_singleton_method("around_#{callback}") do |*args, &block| set_callback(:"#{callback}", :around, *args, &block) end end def _define_after_callback(klass, callback) #:nodoc: klass.define_singleton_method("after_#{callback}") do |*args, &block| set_callback(:"#{callback}", :after, *args, &block) end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems