Phoenix.CodeReloader (Phoenix v1.5.9) View Source
A plug and module to handle automatic code reloading.
For each request, Phoenix goes through all modules and checks if any of
them implement a
__phoenix_recompile__?/0 function. If they do and
it returns true, the module source file is touched, forcing it to be
recompiled. For this functionality to work, Phoenix requires you to add
:phoenix compiler to your list of compilers:
compilers: [:phoenix] ++ Mix.compilers()
This is useful, for example, to recompile modules that depend on external
systems, such as directories, databases, etc. Note if you simply depend on
@external_resource annotation should be used.
To avoid race conditions, all code reloads are funneled through a sequential call operation.
Link to this section Summary
Link to this section Functions
API used by Plug to invoke the code reloader on every request.
API used by Plug to start the code reloader.
Reloads code for the current Mix project by invoking the
:reloadable_compilers on the list of
This is configured in your application environment like:
config :your_app, YourApp.Endpoint, reloadable_compilers: [:gettext, :phoenix, :elixir], reloadable_apps: [:ui, :backend]
Keep in mind
:reloadable_compilers must be a subset of the
:compilers specified in
project/0 in your
:reloadable_apps defaults to
nil. In such case
default behaviour is to reload current project if it
consists of single app, or all applications within umbrella
project. You can set
:reloadable_apps to subset of default
applications to reload only some of them, empty list - to
effectively disable code reloader, or include external
applications from library dependencies.