ankane/strong_migrations

Catch unsafe migrations in development

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 43 minutes ago
Added to GitGenius on September 15th, 2026
Created on November 23rd, 2015
Open Issues & Pull Requests: 4 (+0)
GitHub issues: Enabled
Number of forks: 200
Total Stargazers: 4,448 (+0)
Total Subscribers: 27 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 5.3 hours
Mean response time: 4.5 days
90th percentile: 9.3 days
Tracked items: 34

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 2
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,177 days
Stale 30+ days: 2
Stale 90+ days: 2

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Strong Migrations is a Ruby gem that catches unsafe database migrations in development.

The tool addresses the problem of migrations that can cause application downtime or errors by blocking reads and writes, corrupting data, or causing runtime exceptions. It works by detecting potentially dangerous operations before they run and preventing execution by default, while providing guidance on safer alternatives. Operations are classified as dangerous if they block reads or writes for more than a few seconds or have a good chance of causing application errors.

Developers should adopt this tool if they work with Rails applications using PostgreSQL, MySQL, or MariaDB and want to prevent migration-related incidents in production. It suits any team concerned with database safety and zero-downtime deployments. The tool detects a broad range of unsafe patterns including removing columns, changing column types, renaming tables, adding foreign keys, creating indexes non-concurrently, and setting NOT NULL on existing columns. Database-specific checks are provided for PostgreSQL, MySQL, and MariaDB, since each has different locking and rewrite behaviors. The tool allows disabling specific checks or adding custom checks when needed.

The project maintains active engagement with issues and pull requests, showing responsiveness to user feedback and bug reports. Development includes regular updates to detection logic and support for new database features. The codebase demonstrates careful attention to the nuances of different database systems and their migration semantics.