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.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | weavejester/ragtime |
| Owner | weavejester |
| Primary language | Clojure |
| License | EPL-1.0 — Requires review (not clearly OSI) |
| Stars | 641 |
| Forks | 85 |
| Open issues | 18 |
| Latest release | Unknown |
| Last updated | 2025-09-23 |
| Source | https://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.
Get the ragtime source
Clone the repository and explore it locally.
git clone https://github.com/weavejester/ragtime.gitcd ragtime# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
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.
| Signal | Assessment |
|---|---|
| Maintenance | Moderate |
| Documentation | Adequate |
| License clarity | Clear |
| Deployment complexity | Low |
| DEV.co fit | Good |
| Assessment confidence | Medium |
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.
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.coRelated 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?
What happens if a migration fails midway?
Is Ragtime production-ready?
How do I use Ragtime with a non-Clojure application?
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.