Module: Typelizer::DSL::Hooks

Defined in:
lib/typelizer/dsl/hooks.rb,
lib/typelizer/dsl/hooks/ams.rb,
lib/typelizer/dsl/hooks/alba.rb,
lib/typelizer/dsl/hooks/panko.rb,
lib/typelizer/dsl/hooks/oj_serializers.rb

Defined Under Namespace

Modules: AMS, Alba, Builder, Methods, OjSerializers, Panko

Class Method Summary collapse

Class Method Details

.install(base) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/typelizer/dsl/hooks.rb', line 6

def self.install(base)
  # Always install hooks to capture multi associations.
  # The hooks only record data to a Set, so overhead is minimal.
  if defined?(::Alba::Resource) && base.ancestors.include?(::Alba::Resource)
    require_relative "hooks/alba"
    base.singleton_class.prepend(Alba)
  elsif defined?(::ActiveModel::Serializer) && base.ancestors.include?(::ActiveModel::Serializer)
    require_relative "hooks/ams"
    base.singleton_class.prepend(AMS)
  elsif defined?(::Oj::Serializer) && base.ancestors.include?(::Oj::Serializer)
    require_relative "hooks/oj_serializers"
    base.singleton_class.prepend(OjSerializers)
  elsif defined?(::Panko::Serializer) && base.ancestors.include?(::Panko::Serializer)
    require_relative "hooks/panko"
    base.singleton_class.prepend(Panko)
  end
end