DEV.co
Open-Source Databases · weavejester

ragtime

Ragtime is a Clojure library for managing database migrations in a database-agnostic way. It provides a common interface for defining, tracking, and rolling back migrations across different data stores, with built-in support for SQL via java.jdbc and next.jdbc.

Source: GitHub — github.com/weavejester/ragtime
641
GitHub stars
85
Forks
Clojure
Primary language
EPL-1.0
License (Requires review (not clearly OSI))

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositoryweavejester/ragtime
Ownerweavejester
Primary languageClojure
LicenseEPL-1.0 — Requires review (not clearly OSI)
Stars641
Forks85
Open issues18
Latest releaseUnknown
Last updated2025-09-23
Sourcehttps://github.com/weavejester/ragtime

What ragtime is

Ragtime implements three core protocols—DataStore, Migration, and MigrationIndex—to abstract migration operations from specific database implementations. It supports SQL migrations as .sql or .edn files, tracks applied migrations in a dedicated table, and handles conflict resolution strategies.

Quickstart

Get the ragtime source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/weavejester/ragtime.gitcd ragtime# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

SQL schema versioning in Clojure applications

Primary use case: managing incremental database schema changes with up/down migrations for Clojure projects using either java.jdbc or next.jdbc.

Multi-database deployments

Deploy the same application logic across different database backends (PostgreSQL, MySQL, H2, etc.) without rewriting migrations.

Dev-to-production migration workflows

Version-controlled migrations tracked in git, with conflict detection and rollback support for safe schema evolution.

Implementation considerations

  • Migrations are ordered; execution depends on consistent ordering in the sequence and conflict resolution strategy.
  • Database connectivity must be available at migration time; no support for offline schema snapshots evident.
  • Custom DataStore implementations required for non-JDBC data stores; protocol-based design allows extension but requires Clojure coding.
  • SQL migrations can be .sql or .edn format; team must decide on convention and ensure consistency.
  • Migration IDs and tracking state live in a dedicated migrations table; schema must be writable and accessible.

When to avoid it — and what to weigh

  • Non-SQL or NoSQL-primary data stores — Ragtime's built-in implementations are SQL-focused. Custom DataStore implementations would be required for MongoDB, DynamoDB, or similar systems.
  • Non-Clojure technology stack — Library is Clojure-specific; no direct support for Java, Python, Node.js, or Go projects.
  • Real-time zero-downtime migrations at scale — No clear evidence in provided data of support for online schema changes, shadow tables, or blue-green migration strategies for large production databases.
  • Team unfamiliar with Clojure ecosystem — Requires Clojure knowledge and familiarity with deps.edn/Leiningen build systems; steep learning curve for non-Lisp developers.

License & commercial use

Distributed under Eclipse Public License 1.0 (EPL-1.0) or later, at licensor's option. EPL-1.0 is a copyleft OSI-approved license.

EPL-1.0 is an OSI-approved, open-source copyleft license. Derivative works and modifications must retain EPL-1.0 or compatible license. Using Ragtime as-is in commercial products is permitted; consult legal counsel if distributing modifications.

DEV.co evaluation signals

Editorial assessment — not user reviews. Directional, with an explicit confidence level.

SignalAssessment
MaintenanceModerate
DocumentationAdequate
License clarityClear
Deployment complexityLow
DEV.co fitGood
Assessment confidenceMedium
Security considerations

No security-specific features or audit log mechanisms described. Migrations are Clojure code or SQL statements; review all migration files for injection risks and validate user input. Database credentials and connection strings must be managed securely outside migrations. No mention of encryption, access controls, or compliance support.

Alternatives to consider

Liquibase

Language-agnostic, database-agnostic, XML/YAML/SQL-based migration definitions; broader ecosystem support but heavier operational overhead.

Flyway

JVM-focused, lighter-weight than Liquibase, SQL-first; good fit for Java/Clojure but less abstraction for custom data stores.

Migratus

Alternative Clojure migration library; compare feature set, community adoption, and maintenance status for Clojure-specific use cases.

Software development agency

Build on ragtime with DEV.co software developers

Review the full documentation and test Ragtime in a development environment to confirm compatibility with your JDBC setup and migration workflow. Contact our team for Clojure architecture guidance.

Talk to DEV.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

ragtime FAQ

Can Ragtime manage migrations for non-SQL databases?
Ragtime provides implementations for java.jdbc and next.jdbc (SQL-focused). Custom DataStore protocol implementations are required for NoSQL or other systems.
What happens if a migration fails midway?
Not explicitly documented in provided data. Review conflict resolution strategy and run-down! rollback mechanism; test failure scenarios thoroughly.
Is Ragtime production-ready?
14-year history and modest adoption (641 stars) suggest stability for mainstream SQL use cases. Test thoroughly in your environment; review open issues (18 tracked) for known limitations.
How do I use Ragtime with a non-Clojure application?
Ragtime is Clojure-specific and not directly usable from Java, Python, or other languages. Use Liquibase, Flyway, or language-specific alternatives.

Software developers & web developers for hire

Adopting ragtime is usually one piece of a larger software development effort. As a software development agency, DEV.co provides software development services and web development expertise — pairing senior software developers and web developers with your team to design, build, and operate open-source databases software in production.

Evaluate Ragtime for Your Clojure Stack

Review the full documentation and test Ragtime in a development environment to confirm compatibility with your JDBC setup and migration workflow. Contact our team for Clojure architecture guidance.