Skip to content
A social graph for Ruby objects.
Branch: master
Clone or download
Latest commit 07b003f Jul 13, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Revert "merge gerrit master" Nov 18, 2014
lib Finish CSV output Jul 12, 2018
.gitignore Refactoring to allow HTML, JSON Output Nov 25, 2014
.rspec More skeleton work. Oct 20, 2014 Updated CoC Jun 17, 2016
COPYING.txt adds graph cluster detection Dec 15, 2014
Gemfile Enforce Ruby version. Mar 11, 2015
LICENSE.txt Update license Mar 11, 2015 Finish CSV output Jul 12, 2018
Rakefile Revert "merge gerrit master" Nov 18, 2014
heatmap.png Add screen caps of sample graphs Jun 17, 2016
network_graph.png Add screen caps of sample graphs Jun 17, 2016
society.gemspec Version bump Mar 16, 2016


Society analyzes and presents social graphs of relationships between classes in a Ruby or Rails project. It displays relationships that are either explicitly declared (e.g. in an ActiveRecord relation) or defined by calls between classes (e.g. in the source of ClassA there is a call to ClassB).

Please note that Society requires Ruby 2.1 or later.

Sample output

Network graph

Network graph




Add this line to your application's Gemfile:

gem 'society'

And then execute:

$ bundle

Or install it yourself as:

$ gem install society


From your terminal:

$ society from path/to/models [more/paths/if/applicable]

and then open doc/society/index.htm or doc/society/society.csv in your browser.

For more complex applications, society also supports file globbing:

society from ../path/to/models/*user*

The default format is HTML and CSV; you can skip the HTML interface and just get the JSON by passing --format json

Note that all JSON data is timestamped (regardless of output format) to store snapshots of your project over time.


Society was inspired by an original idea by Kerri Miller (@kerrizor).


Please note that this project is released with a [Contributor Code of Conduct] ( By participating in this project you agree to abide by its terms.

  1. Fork it ( )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request
You can’t perform that action at this time.