clyfe / integrant-repl

Reloaded workflow functions for Integrant

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


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.


Add the following dependency to your dev profile:

[integrant/repl "0.3.2"]


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)

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

user=> (init)

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)

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

user=> (halt)

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

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

Behind the scenes, Integrant-REPL uses tools.namespace. You can set the directories that are monitored for changed files by using the refresh-dirs function:

user=> (require '[ :refer [set-refresh-dirs]])
user=> (set-refresh-dirs "src/clj")


Copyright © 2020 James Reeves

Released under the MIT license.


Reloaded workflow functions for Integrant


Language:Clojure 100.0%