Sha256: 5b311adfb5a6a0b3201ad373c0b9fac5922523b4f65a7050806a2919897a349e
Contents?: true
Size: 1.44 KB
Versions: 2
Compression:
Stored size: 1.44 KB
Contents
# frozen_string_literal: true module Chusaku module Routes # Extract information about the Rails project's routes. # # Example output: # # { # 'users' => { # 'edit' => { # verbs: ['GET'], # path: '/users/:id', # name: 'edit_user' # }, # 'update' => { # verbs: ['PUT', 'PATCH'], # path: '/users', # name: nil # } # }, # 'empanadas' => { # 'create' => { # verbs: ['POST'], # path: '/empanadas', # name: nil # } # } # } # # @return {Hash} def self.call routes = {} Rails.application.routes.routes.each do |route| defaults = route.defaults controller = defaults[:controller] action = defaults[:action] routes[controller] ||= {} if routes[controller][action].nil? routes[controller][action] = format_action(route) else routes[controller][action][:verbs].push(route.verb) end end routes end private # Extract information of a given route. # # @param {ActionDispatch::Journey::Route} route # @return {Hash} def self.format_action(route) { verbs: [route.verb], path: route.path.spec.to_s.gsub('(.:format)', ''), name: route.name } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
chusaku-0.1.3 | lib/chusaku/routes.rb |
chusaku-0.1.2 | lib/chusaku/routes.rb |