Reloaded workflow functions for Integrant
Clojure
Switch branches/tags
Clone or download
Latest commit 89a9552 Mar 8, 2018
Permalink
Failed to load latest commit information.
src/integrant Check system exists before attempting to halt it Mar 1, 2018
test/integrant Initial commit Dec 24, 2016
.gitignore Initial commit Dec 24, 2016
README.md Release 0.3.1 Mar 8, 2018
project.clj Release 0.3.1 Mar 8, 2018

README.md

Integrant-REPL

A Clojure library that implements the user functions of Stuart Sierra's reloaded workflow for Integrant.

It's very similar to reloaded.repl, except that it works for Integrant, rather than Component.

Install

Add the following dependency to your dev profile:

[integrant/repl "0.3.1"]

Usage

Require the integrant.repl namespace in your user.clj file, and use the set-prep! function to define a zero-argument function that returns an Integrant configuration.

For example:

(ns user
  (:require [integrant.repl :refer [clear go halt prep init reset reset-all]]))

(integrant.repl/set-prep! (constantly {::foo {:example? true}}))

To prepare the configuration, you can now use:

user=> (prep)
:prepped

The configuration is stored in integrant.repl.state/config. To initiate the configuration, use:

user=> (init)
:initiated

This will turn the configuration into a running system, which is stored in integrant.repl.state/system.

Because these two steps are common, we can instead use:

user=> (go)
:initiated

This performs the (prep) and (init) steps together. Once the system is running, we can stop it at any time:

user=> (halt)
:halted

If we want to reload our source files and restart the system, we can use:

user=> (reset)
:reloading (...)
:resumed

License

Copyright © 2017 James Reeves

Released under the MIT license.