sinatraで設定したパス一覧を取得する
メモ
こんな感じでスクリプトを書いた。
require 'rack' require 'sinatra' class Sinatra::Base private class << self attr_reader :original_routes # なぜかsuperが呼べない... def route(verb, path, options = {}, &block) @original_routes ||= {} (@original_routes[verb] ||= []) << path host_name(options.delete(:host)) if options.key?(:host) enable :empty_path_info if path == "" and empty_path_info.nil? signature = compile!(verb, path, block, options) (@routes[verb] ||= []) << signature invoke_hook(:route_added, verb, path, block) signature end end end def run(*args) args.first.instance_variable_get(:@mapping).each do |mapping| # 二番目の要素がmappingのbase path base_path = mapping[1] # 三番目の要素がcontroller class mapping[3].original_routes.each do |method, paths| paths.each { |path| puts "#{method}\t#{base_path}#{path}" } end end end Sinatra::Base.set :running_server, true load './config.ru'