A simplified module reloader for Elixir.
It differs from its predecessors (exreloader, mochiweb reloader) in a way that it scans only beam files of the current mix project and the current env.
Reprise is best used on dev environment, that's usually where you need reloading of modules. Here goes an example on how to do this:
-
add to deps:
{:reprise, "~> 0.4.0", only: :dev}
-
add to apps:
def application do dev_apps = Mix.env == :dev && [:reprise] || [] [ applications: dev_apps ++ your_apps ] end
Then your modules will be reinjected into your node - iex session for instance - with a nice log report, each time you recompile them. Here's an example how it looks like:
iex> 12:14:59.163 [info] Reloaded modules: [Rockside.HTML.DSL, Rockside]
The default interval between scans for changed modules is 1 second. You can check it and set a new one - the unit is milliseconds:
iex(1)> Reprise.Server.interval
1000
iex(2)> Reprise.Server.interval(2000)
{:ok, [prev: 1000]}
The code is released under the BSD 2-Clause License.