Reprise reloads your modules after they've been recompiled. It is thought as a companion to inotify tools. It scans for changes in beam files belonging to youyr project. Doesn't recompile stuff by itself.




Build Status version downloads downloads/week license

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.5", only: :dev}

  • add to apps:

    def application do
      dev_apps = Mix.env == :dev && [:reprise] || []
      [ applications: dev_apps ++ your_apps ]

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
iex(2)> Reprise.Server.interval(2000)
{:ok, [prev: 1000]}


The code is released under the BSD 2-Clause License.