class ActionDispatch::Routing::Mapper

Public Instance Methods

add_missing_concern(enhancement) click to toggle source
# 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) click to toggle source
# 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: []) click to toggle source
# 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

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

    module_parent_for(enhancement).route_concerns(self)
  end

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

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

  def module_parent_for(klass)
    Rails.version < '6' ? klass.parent : klass.module_parent
  end
end
module_parent_for(klass) click to toggle source
# 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) click to toggle source
# 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