Ragtime: Database-independent Migration Library


Ragtime is a Clojure library for migrating structured data in a way that's database independent. It defines a common interface for expressing migrations, much like Ring defines a common interface for expressing web applications.


Add the following dependency to your deps.edn file:

dev.weavejester/ragtime {:mvn/version "0.9.3"}

Or to your Leiningen project file:

[dev.weavejester/ragtime "0.9.3"]


Ragtime needs three pieces of data to work:

  1. A migratable data store
  2. An ordered sequence of migrations
  3. A strategy on how to deal with conflicts

A data store is an implementation of the DataStore protocol, and tells Ragtime how to record which migrations are applied to an arbitrary store of data, such as a database.

Since 0.5.0, migrations are implementations of the Migration protocol, which has three methods:

  • id - returns a unique ID for the migration
  • run-up! - applies the migration to a database
  • run-down! - rolls back the migration in a database

Ragtime comes with a way of loading SQL migrations from files, and applying them to a SQL database.


Download Details:

Author: weavejester
Source Code: https://github.com/weavejester/ragtime 
License: EPL-1.0 license

#clojure #sql #database 

Ragtime: Database-independent Migration Library
1.05 GEEK