新建测试项目
rails new app
查看Gemfile.lock
截取部分,文件根据空格缩进来表示依赖层级。
GEM
remote: https://rubygems.org/
specs:
actionmailer (4.2.3)
actionpack (= 4.2.3)
actionview (= 4.2.3)
activejob (= 4.2.3)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.3)
actionview (= 4.2.3)
activesupport (= 4.2.3)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
脚本
vim gem_graph.rb
File.open('gems.gv','w') do |w|
w.puts "digraph a{"
File.open('Gemfile.lock').each do |l|
l =~ /^( {4,6})([a-zA-Z0-9_-]+)/
# $1匹配空格 , $2匹配gem名称
if $1 and $1.length == 4
@k = $2
elsif $1 and $1.length == 6
@v = $2
#根据样式推断,此时一定存在相对的@k
w.puts " \"#{@k}\" -> \"#{@v}\" "
end
end
w.puts "}"
end
ruby gem_graph.rb
生成了gems.gv文件。
安装graphviz
可以打开gems.gv看看效果了
生成png图片。
dot -Tpng -o ./gems.png ./gems.gv