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 containsinclude Mongoid::Document
on the file will be tracked. yyy will be created as abox
node if no corresponding file found. -
field :xxx, type:yyy
: a field xxx with type yyy.type
anddefault
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