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.4"}
Or to your Leiningen project file:
[dev.weavejester/ragtime "0.9.4"]
Ragtime needs three pieces of data to work:
- A migratable data store
- An ordered sequence of migrations
- 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 migrationrun-up!
- applies the migration to a databaserun-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.
- Getting Started
- Upgrading from 0.3.x
- Upgrading from 0.4.x
- Concepts
- SQL Migrations
- Leiningen Integration
- API docs
- Third-party Libraries
Copyright © 2024 James Reeves
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version