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