Ecto.ERD
A mix task for generating an ERD (Entity-Relationship Diagram) in various formats for all Ecto schemas in your project.
Supported formats:
Definition of schemas
```elixir defmodule Blog.Post do use Ecto.Schema schema "posts" do field(:title, :string) field(:text, :string) timestamps() belongs_to(:user, Blog.User) has_many(:comments, Blog.Comment) end end defmodule Blog.Comment do use Ecto.Schema schema "comments" do field(:text, :string) timestamps() belongs_to(:post, Blog.Post) belongs_to(:user, Blog.User) end end defmodule Blog.User do use Ecto.Schema schema "users" do field(:email, :string) has_many(:posts, Blog.Post) has_many(:comments, Blog.Comment) end end ```Installation
The package can be installed by adding ecto_erd to your list of dependencies
in mix.exs:
def deps do
[
{:ecto_erd, "~> 0.6", only: :dev}
]
endUsage
Just run:
mix ecto.gen.erdThe command above produces a DOT file, which you can convert to an image using the Graphviz utility:
dot -Tpng ecto_erd.dot -o erd.png
Configuration is possible via the .ecto_erd.exs file.
The docs can be found at https://hexdocs.pm/ecto_erd.
Configuration examples and output for a few open-source projects can be
found in the PAGES section under EXAMPLES.
Troubleshooting
Trying to run ecto_erd in an umbrella project? You might see this error:
$ mix ecto.gen.erd
** (RuntimeError) Unable to detect `:otp_app`, please specify it explicitly
The easiest solution is to run the command on one of the apps in the apps/ directory. Another option is to create a configuration file and specify the :otp_app. See the docs for details.