Skip to content

Instantly share code, notes, and snippets.

@lissdy
Created August 7, 2018 06:31

Revisions

  1. lissdy created this gist Aug 7, 2018.
    45 changes: 45 additions & 0 deletions routes_csv.rake
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,45 @@
    namespace :routes do
    desc 'Print out all defined routes in CSV format.'
    task :csv => :environment do

    class CSVFormatter
    def initialize
    @buffer = []
    end

    def result
    @buffer.join("\n")
    end

    def section_title(title)
    @buffer << "\n#{title}:"
    end

    def section(routes)
    routes.map do |r|
    # @buffer << "#{r[:name]},#{r[:verb]},#{r[:path]},#{r[:reqs]}"
    @buffer << "#{r[:verb]} #{r[:path]}"
    end
    end

    def header(routes)
    @buffer << 'Prefix,Verb,URI Pattern,Controller#Action'
    end

    def no_routes
    @buffer << <<-MESSAGE.strip_heredoc
    You don't have any routes defined!
    Please add some routes in config/routes.rb.
    For more information about routes, see the Rails guide: http://guides.rubyonrails.org/routing.html.
    MESSAGE
    end

    end

    all_routes = Rails.application.routes.routes
    require 'action_dispatch/routing/inspector'
    inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes)
    # puts inspector.format(ActionDispatch::Routing::ConsoleFormatter.new, ENV['CONTROLLER'])
    puts inspector.format(CSVFormatter.new, ENV['CONTROLLER'])
    end
    end