mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 05:23:03 +12:00
docs: add docs around improving compile times
This commit is contained in:
parent
5ab824db6d
commit
9df690bfa4
2 changed files with 46 additions and 0 deletions
43
documentation/topics/compile_times.md
Normal file
43
documentation/topics/compile_times.md
Normal 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.
|
3
mix.exs
3
mix.exs
|
@ -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: [
|
||||
|
|
Loading…
Reference in a new issue