Skip to content

yohm/kata_18

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

西脇.rb&東灘.rb 第4回合同もくもく会

やったことのまとめ

  • 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

Gemfile.lockの解析

  • サンプルデータでは簡単すぎて面白くなかったので、railsアプリのgemを解析してみた
  • rails apps composerでいろいろとgemをつけたrailsの仮アプリを作成
  • bundle install で Gemfile.lock ができる。
  • Gemfile.lockの簡易パーサーを書いて解析。
  • 結果はこんな具合になった sample

Releases

No releases published

Packages

No packages published

Languages