Class: ActionDispatch::Routing::Mapper

Inherits:
Object
  • Object
show all
Includes:
LinkedRails::Routes
Defined in:
lib/linked_rails/enhancements/route_concerns.rb

Instance Method Summary collapse

Methods included from LinkedRails::Routes

#find_tenant_route, #linked_resource, #singular_linked_resource, #use_linked_rails

Instance Method Details

#add_missing_concern(enhancement) ⇒ Object



34
35
36
37
38
# File 'lib/linked_rails/enhancements/route_concerns.rb', line 34

def add_missing_concern(enhancement)
  return if @concerns.include?(concern_key_from_enhancement(enhancement))

  module_parent_for(enhancement).route_concerns(self)
end

#concern_key_from_enhancement(enhancement) ⇒ Object



40
41
42
# File 'lib/linked_rails/enhancements/route_concerns.rb', line 40

def concern_key_from_enhancement(enhancement)
  module_parent_for(enhancement).to_s.demodulize.underscore.to_sym
end

#include_route_concerns(klass: @scope[:controller].classify.constantize, only: nil, except: []) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/linked_rails/enhancements/route_concerns.rb', line 20

def include_route_concerns(klass: @scope[:controller].classify.constantize, only: nil, except: [])
  include =
    if klass.respond_to?(:each)
      klass.map(&method(:route_concerns_for)).flatten.uniq
    else
      route_concerns_for(klass)
    end

  include &= only unless only.nil?
  include -= except

  concerns include
end

#module_parent_for(klass) ⇒ Object



51
52
53
# File 'lib/linked_rails/enhancements/route_concerns.rb', line 51

def module_parent_for(klass)
  Rails.version < '6' ? klass.parent : klass.module_parent
end

#route_concerns_for(klass) ⇒ Object



44
45
46
47
48
49
# File 'lib/linked_rails/enhancements/route_concerns.rb', line 44

def route_concerns_for(klass)
  klass
    .enhancement_modules(:Routing)
    .each(&method(:add_missing_concern))
    .map(&method(:concern_key_from_enhancement))
end