README.md

# Reprise
[![Build Status](https://travis-ci.org/herenowcoder/reprise.svg?branch=master)](https://travis-ci.org/herenowcoder/reprise)
[![hex.pm version](https://img.shields.io/hexpm/v/reprise.svg)](https://hex.pm/packages/reprise)
[![hex.pm downloads](https://img.shields.io/hexpm/dt/reprise.svg)](https://hex.pm/packages/reprise)
[![hex.pm downloads/week](https://img.shields.io/hexpm/dw/reprise.svg)](https://hex.pm/packages/reprise)
[![hex.pm license](https://img.shields.io/hexpm/l/reprise.svg)](https://github.com/herenowcoder/reprise/raw/master/LICENSE)

A simplified module reloader for Elixir.

It differs from its predecessors ([exreloader][1], mochiweb reloader)
in a way that it scans only beam files of the current mix project
and the current env.

[1]: http://github.com/yrashk/exreloader

### 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.4.0", only: :dev}`

- add to apps:
    ```Elixir
    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:
```Elixir
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.