tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

Ruby on Rails: $ rake routes の結果をmarkdown形式で表示。

こんな感じで出力したい

|      Prefix | Verb   | URI Pattern               | Controller#Action    |
| ----------- | ------ | ------------------------- | -------------------- |
|       users | GET    | /users(.:format)          | users#index          |
|             | POST   | /users(.:format)          | users#create         |
|    new_user | GET    | /users/new(.:format)      | users#new            |
|   edit_user | GET    | /users/:id/edit(.:format) | users#edit           |
|        user | GET    | /users/:id(.:format)      | users#show           |
|             | PATCH  | /users/:id(.:format)      | users#update         |
|             | PUT    | /users/:id(.:format)      | users#update         |

はてなブログ等のMarkdown形式に対応しているシステムに貼付けると、自動でテーブルにしてくれて便利。

手順

  • 以下に紹介するコードをRailsの管理下に置く。
  • markdown_formatter.rbをlibディレクトリの下に。
  • rake_task.rbをlib/taskディレクトリに置く。(名前は変更可)

コード

注意

  • 動作しない場合、以下のコメントアウトされていないラインをrake_task.rbに追加
# require 'action_dispatch/routing/inspector'の下
require 'markdown_formatter'
# inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes)
  • markdown_formatterのコードを一部変更
divider = "| #{'-' * name_width} | #{'-' * verb_width} | #{'-' * path_width} | #{'-' * reqs_width} |"

顛末

こんなことできたらいいのになーと思い、いろいろ自分で調べたのですができませんでした。 Stack overflowで聞いたところ、2時間程して返答あり、びっくりした次第です。 世の中には凄い人がいますね。追いつきたい。

リンク

間違いがあれば、ご指摘下さると幸いです。