docs: add docs around improving compile times

This commit is contained in:
Zach Daniel 2021-11-03 17:29:24 -04:00
parent 5ab824db6d
commit 9df690bfa4
2 changed files with 46 additions and 0 deletions

View file

@ -0,0 +1,43 @@
# Improving Compile Times
In previous versions of Ash, the standard way to configure the list of resources for an Api module looked like this:
```elixir
defmodule MyApp.MyApi do
use Ash.Api
resources do
resource MyApp.MyResource
...
end
end
```
This caused many compilation dependency issues, causing slow compile times when changing single files, and could also potentially lead to deadlocks.
The preferred way of doing this now looks like this:
```elixir
# Define a registry module
defmodule MyApp.MyApi.Registry do
use Ash.Registry,
extensions: Ash.Registry.ResourceValidations
registry do
entry MyApp.MyResource
...
end
end
defmodule MyApp.MyApi do
use Ash.Api, otp_app: :my_app
end
# in `config/config.exs`
config :my_app, MyApp.MyApi,
registry: MyApp.MyApi.Registry
```
This will prevent a bunch of cross-concern compile time dependencies, allowing for much faster compile times in general.

View file

@ -85,6 +85,9 @@ defmodule Ash.MixProject do
],
"documentation/topics/multitenancy.md": [
title: "Multitenancy"
],
"documentation/topics/compile_times.md": [
title: "Compile Times"
]
],
groups_for_extras: [