0.02
No commit activity in last 3 years
No release in over 3 years
Create model diagram graph (ERD graph) in graphviz's dot language
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

active_support
>= 0
>= 0
 Project Readme

Mongoid-ERD ¶ ↑

Create model-diagram (ERD graph) via Graphviz using the mongoid’s model source code.

Export a executable merd:

$ merd | dot -Tpng > docs/erd.png

or:

$ merd --model_dir=other/models | dot -Tpng > docs/erd.png

You can also create only a subset of models by:

$ merd --include=Class1,Class2

or

$ merd --exclude=Class4,Class5

You need to add dot executable in your PATH.

Class, Inherits and Fields¶ ↑

  • class xxx:yyy: a record xxx inherit from yyy. The first class that contains include Mongoid::Document on the file will be tracked. yyy will be created as a box node if no corresponding file found.

  • field :xxx, type:yyy: a field xxx with type yyy. type and default will be tracked.

  • embeds_many/embeds_one/has_many/has_one :xxx, :as => :yyy: field and a belong_to/embeds_many/embeds_one/has_one link to xxx

  • belongs_to/embedded_in :xxx: a field without link.

Methods before :private keyword will also be tracked.

Special Markers¶ ↑

erd_tag user.core tag name of the current class (see configuration files below)

erd{}

class xxx:yyy # erd{fillcolor:xxx} yyy: yyy will become the label of the current class.

field ... # erd{...} xxx: xxx will become the label of that field.

embeds_many ... # erd{...} yyy: yyy will become the label of that edge.

erd -> node_name{color:yyy} label: arbitrage edge with attributes.

Configuration Files¶ ↑

config/mongoid_erd.yml:

user: {shape: Mrecord}
user.core: {fillcolor: blue}

user.core attributes will be merged to user, then should be merged into class ... # erd{attrs}. Those attributes will passed to dot language as the attributes associate to the class node.

An other will to use tag is restrict output contains only classes with specific tag:

$ merd --tag=user