Method: ActionDispatch::Routing::Mapper::Base#mount
- Defined in:
- actionpack/lib/action_dispatch/routing/mapper.rb
#mount(app, options = nil) ⇒ Object
Mount a Rack-based application to be used within the application.
mount SomeRackApp, at: "some_route"
Alternatively:
mount(SomeRackApp => "some_route")
For options, see match, as mount uses it internally.
All mounted applications come with routing helpers to access them. These are named after the class specified, so for the above example the helper is either some_rack_app_path or some_rack_app_url. To customize this helper’s name, use the :as option:
mount(SomeRackApp => "some_route", as: "exciting")
This will generate the exciting_path and exciting_url helpers which can be used to navigate to this mounted app.
632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 |
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 632 def mount(app, = nil) if path = .delete(:at) elsif Hash === app = app app, path = .find { |k, _| k.respond_to?(:call) } .delete(app) if app end raise ArgumentError, "A rack application must be specified" unless app.respond_to?(:call) raise ArgumentError, <<~MSG unless path Must be called with mount point mount SomeRackApp, at: "some_route" or mount(SomeRackApp => "some_route") MSG rails_app = rails_app? app [:as] ||= app_name(app, rails_app) target_as = name_for_action([:as], path) [:via] ||= :all match(path, { to: app, anchor: false, format: false }.merge()) define_generate_prefix(app, target_as) if rails_app self end |