Module: LinkedRails::Enhanceable

Included in:
Actions::List
Defined in:
lib/linked_rails/enhanceable.rb

Instance Method Summary collapse

Instance Method Details

#enhanceable(klass_method, enhanceable) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/linked_rails/enhanceable.rb', line 12

def enhanceable(klass_method, enhanceable)
  include_enhancements(klass_method, enhanceable)

  define_singleton_method('inherited') do |target|
    super(target)
    target.include_enhancements(klass_method, enhanceable) if target.name
  end
end

#include_enhancements(klass_method, enhanceable) ⇒ Object



5
6
7
8
9
10
# File 'lib/linked_rails/enhanceable.rb', line 5

def include_enhancements(klass_method, enhanceable)
  send(klass_method)
    .try(:enhancement_modules, enhanceable)
    &.reject { |mod| include? mod }
    &.each { |mod| include mod }
end