Skip to content

Instantly share code, notes, and snippets.

@emad-elsaid
Last active January 25, 2018 09:49
Show Gist options
  • Save emad-elsaid/17cded5b8e919aaccd23f91b27e10754 to your computer and use it in GitHub Desktop.
Save emad-elsaid/17cded5b8e919aaccd23f91b27e10754 to your computer and use it in GitHub Desktop.
#!/usr/bin/env erb
<%
stats = `bundle --local | tail -n2 | head -n1`.scan(/[0-9]+/)
def files_for(ext)
Dir.glob('**/*.' + ext)
end
def size_for(ext)
files_for(ext).map{|f| File.size(f) }.inject(:+).to_i
end
%>
digraph graphname {
direct_gems [label="Direct gems <%= stats.first %>"]
indirect_gems [label="Indirect gems <%= stats.last %>"]
initializers [label="<%= Dir.glob('config/initializers/*.rb').count %> initializers"]
dev_initializers [label="<%= `rake initializers`.lines.count %> Development initializers"]
prod_initializers [label="<%= `RAILS_ENV=production rake initializers`.lines.count %> Production initializers"]
{ rank=same; initializers dev_initializers prod_initializers }
dev_middlewares [label="<%= `rake middleware`.lines.count %> Development middlewares"]
prod_middlewares [label="<%= `RAILS_ENV=production rake middleware`.lines.count %> Production middlewares"]
controllers [label="Controllers: <%= Dir.glob('app/controllers/**/*_controller.rb').count %>"]
models [label="Models: <%= Dir.glob('app/models/**/*.*').reject{|f| f.include?('concern') }.count %>"]
views [label="Views: <%= Dir.glob('app/views/**/*.*').count %>"]
routes [label="Routes <%= `rake routes`.lines.count - 1 %>"]
indirect_gems -> direct_gems -> initializers -> routes
direct_gems -> dev_initializers -> dev_middlewares -> routes
direct_gems -> prod_initializers -> prod_middlewares -> routes
routes -> controllers
controllers -> models
controllers -> views
js [label="JS: <%= files_for('js').count %> Files, <%= size_for('js') / 1024 %> KB"]
scss [label="SCSS: <%= files_for('scss').count %> Files, <%= size_for('scss') / 1024 %> KB"]
png [label="PNG: <%= files_for('png').count %> Files, <%= size_for('png') / 1024 %> KB"]
jpg [label="JPG: <%= files_for('jpg').count %> Files, <%= size_for('jpg') / 1024 %> KB"]
views -> assets
assets -> js
assets -> scss
assets -> png
assets -> jpg
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment