mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 21:43:02 +12:00
43 lines
944 B
Markdown
43 lines
944 B
Markdown
|
# 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.
|