Skip to content

duct-framework/duct-ragtime-component

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Duct-Ragtime-Component

Build Status

A component for the Ragtime migration library, designed to be used in the Duct framework (but can be used in any component-based system).

Installation

Add the following dependency to your project.clj:

[duct/ragtime-component "0.1.4"]

Usage

Start by requiring the library and the Component library:

(require '[duct.component.ragtime :refer [ragtime migrate rollback]]
         '[com.stuartsierra.component :as component])

You will also need a database component that contains a :spec key. In this example, we'll just use a map:

(def system
  (-> (component/system-map
       :db {:spec {:connection-uri "jdbc:h2:mem:test"}}
       :ragtime (ragtime {:resource-path "migrations"}))
      (component/system-using
       {:ragtime [:db]})))

When we start the system, the Ragtime component loads the migrations from the supplied resource path, and connects to the dependent database under the :db key.

(alter-var-root #'system component/start)

We can then migrate and rollback the started Ragtime component. The migrate function will update the database to the latest migration:

(migrate (:ragtime system))

The rollback function can rollback the database a fixed number of migrations, or to a specific migration:

(rollback (:ragtime system))
(rollback (:ragtime system) 2)
(rollback (:ragtime system) "005-create-foo")

License

Copyright © 2016 James Reeves

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

About

Clojure component for managing migrations with Ragtime

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Clojure 100.0%