2017-07-18 [長年日記]
_ Railsで全endpointを取得
Rails5.1で全endpointを取得するのに
ActionDispatch::Routing::RoutesInspector.new (Rails.application.routes.routes).format(ActionDispatch::Routing::ConsoleFormatter.new )
って感じでrake routesのconsoleの結果をstringで取ってきてパース、みたいないけてない処理を書いてしょんぼりしてたのだけど、twitterで聞いたららいっくんさんがスマートな方法教えてくれた。raw_routes = Rails.application.routes.routes.map{|route| ActionDispatch::Routing::RouteWrapper.new(route)}
で取れる。取れたRouteWrapperクラスにpathとかverbとか便利なメソッド群があるので、それを使えばいい。
raw_routes = Rails.application.routes.routes.map{|route| ActionDispatch::Routing::RouteWrapper.new(route)}.map(&:path)
p raw_routes
#=> ["/rails/info/properties(.:format)", "/rails/info/routes(.:format)", "/rails/info(.:format)", "/rails/mailers(.:format)"...]
ありがたや〜。(-人-)