Sha256: c5ce7c3d199105fba6bba152b3593c926be694e98b35540f3d16bde5369e2c77
Contents?: true
Size: 1.39 KB
Versions: 1
Compression:
Stored size: 1.39 KB
Contents
# frozen_string_literal: true 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jsonapi-resources-0.11.0.beta2 | lib/jsonapi/callbacks.rb |