- Code KataのKata 18をやってみた
- AはBに依存, BはCに依存... という依存関係から、Aが依存しているファイルの一覧を出力してみましょうという問題。
- どうせならば依存関係を可視化しようと思い、d3.jsのサイトからグラフのサンプルを取ってきて可視化してみた
- 今回使ったのはこちら。
- (もくもく会後に)railsアプリのgemの依存関係を可視化してみた。
- まずは安直に再帰を使って実装。source
- しかし、このコードでは循環がある場合に無限ループに入ってstack too deepで止まってしまう。
- 無限ループ対策を入れたコードがこちら
- 第二引数で、これまで検索したファイルについての情報を渡して無限ループしないようにした。
- もう少し、すっきりとした(バグが無い事が一目で分かる)コードに書けそうな気がする。
- d3.jsのサンプルの中を見たところ、jsonファイルを特定のフォーマットで出力すれば可視化できそう
- json化するメソッドを実装。source
- 出力したjsonを先ほどのhtmlの横に置いて、htmlファイルを開く
- httpで開く必要があるので、Sinatraで簡易webサーバーをたてた
> ruby -rsinatra -e 'set :public_folder, "html"' -- -p 3000 -o 0.0.0.0