Sha256: 14f9036d28baafeaf898cfdf84bb8ad16f61e4a301faa6f26c640b878a880e0e

Contents?: true

Size: 1.21 KB

Versions: 31

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

module AbstractController
  module Railties
    module RoutesHelpers
      def self.with(routes, include_path_helpers = true)
        Module.new do
          define_method(:inherited) do |klass|
            super(klass)

            namespace = klass.module_parents.detect { |m| m.respond_to?(:railtie_routes_url_helpers) }
            actual_routes = namespace ? namespace.railtie_routes_url_helpers._routes : routes

            if namespace
              klass.include(namespace.railtie_routes_url_helpers(include_path_helpers))
            else
              klass.include(routes.url_helpers(include_path_helpers))
            end

            # In the case that we have ex.
            #   class A::Foo < ApplicationController
            #   class Bar < A::Foo
            # We will need to redefine _routes because it will not be correct
            # via inheritance.
            unless klass._routes.equal?(actual_routes)
              klass.redefine_singleton_method(:_routes) { actual_routes }
              klass.include(Module.new do
                define_method(:_routes) { @_routes || actual_routes }
              end)
            end
          end
        end
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 4 rubygems

Version Path
actionpack-6.1.7.10 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.9 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.8 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.7 lib/abstract_controller/railties/routes_helpers.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/actionpack-6.1.6.1/lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.6 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.5 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.4 lib/abstract_controller/railties/routes_helpers.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/actionpack-6.1.6.1/lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.3 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.2 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7.1 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.7 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.6.1 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.6 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.5.1 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.5 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.4.7 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.4.6 lib/abstract_controller/railties/routes_helpers.rb
actionpack-6.1.4.5 lib/abstract_controller/railties/routes_helpers.rb