reprise

Simplified module reloader for Elixir

BSD-2-CLAUSE License

Stars
43

Reprise

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.

Usage

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 ]
    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]}

License

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