class Rutter::Routes

Routes URL builder.

@see Rutter::Builder#path @see Rutter::Builder#url

@example

router = Rutter.new(base: "http://rutter.org") do
  get "/login", to: "sessions#new", as: :login
  get "/books/:id", to: "books#show", as: :book
end.freeze

routes = Rutter::Routes.new(router)

routes.login_path
  # => "/login"
routes.login_path(return_to: "/")
  # => "/login?return_to=/"
routes.book_path(id: 82)
  # => "/books/82"

routes.login_url
  # => "http://rutter.org/login"
routes.login_url(return_to: "/")
  # => "http://rutter.org/login?return_to=/"
routes.book_url(id: 82)
  # => "http://rutter.org/books/82"

Public Class Methods

new(router) click to toggle source

Initializes the helper.

@param router [Rutter::Builder]

Route router object.

@return [void]

@private

# File lib/rutter/routes.rb, line 49
def initialize(router)
  @router = router
end

Protected Instance Methods

method_missing(method_name, **args) click to toggle source

@private

Calls superclass method
# File lib/rutter/routes.rb, line 56
def method_missing(method_name, **args)
  named_route, type = method_name.to_s.split(/\_(path|url)\z/)
  return super unless type

  @router.public_send(type, named_route.to_sym, **args)
end
respond_to_missing?(method_name, include_private = false) click to toggle source

@private

Calls superclass method
# File lib/rutter/routes.rb, line 64
def respond_to_missing?(method_name, include_private = false)
  meth = method_name.to_s
  meth.end_with?("_path", "_url") || super
end