以前Railsウォッチ20201012でご紹介した内容を自分用に別記事にしました。
RailsのルーティングをFSM(有限状態機械)の形式でHTMLファイルに出力し、動的にルーティングをシミュレートできる機能です。
routes visualizer、`devise_for :users` みたいなDSL処理される系のroutingでもちゃんと展開された。めっちゃ実用的では #kaigionrails pic.twitter.com/LBBKPcE4D4
— Masato Mori (@morimorihoge) October 3, 2020
⚓ Railsのルーティングビジュアライザ
⚓ 必要なもの
- Railsローカル実行環境
- graphviz
なお、2012年の56fee39でJourneyがAction Dispatchに統合された時点で既にビジュアライザのコードが入っているので、もっと前からこの機能があったようです。少なくともRails 4以上で使えるはずです。
⚓ 利用法
- 自分のローカル環境にgraphvizをインストールしておきます。MacでHomebrewを使っている場合は
brew install graphviz
でインストールできます。 -
Railsプロジェクトのルートディレクトリで以下を実行し、出力されたout.htmlをブラウザで開きます。
$ bin/rails r 'File.binwrite "out.html", <アプリ名>::Application.routes.router.visualizer'
なお<アプリ名>
はRailsのアプリ名に置き換えます(アプリ名はconfig/application.rbにある大文字で始まるモジュール名を使います)。
もちろんRailsコンソールでも実行できます。
File.binwrite "out.html", <アプリ名>::Application.routes.router.visualizer
出力されたHTML冒頭のボックスにルーティングを入力して[simulate]を押すと、該当するルーティングがFSM図上でハイライトされます。
⚓ 参考
この機能は、Kaigi on RailsのAaron Pattersonさんによるオープニングキーノートスピーチ『Viewがレンダリングされるまでの技術とその理解』でRailsの秘密機能として紹介されていました(動画は頭出し済み)。