strong_migrations
Large Hadron Migrator
Our great sponsors
strong_migrations | Large Hadron Migrator | |
---|---|---|
16 | 3 | |
3,797 | 1,810 | |
- | 0.2% | |
7.7 | 0.0 | |
7 days ago | 7 months ago | |
Ruby | Ruby | |
MIT License | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
strong_migrations
-
Must-have gems for mature Rails
gem "strong_migrations" - https://github.com/ankane/strong_migrations | Helps devs write non-blocking migrations, a must-have.
-
How does Rails handle out of order migrations (when working on different local branches)
There’s no real way to test, but you can use gems like https://github.com/ankane/strong_migrations and not allow to merge branches unless they are up-to-date with main.
-
When Postgres blocks: tips for dealing with locks
Half of the problems in this article are migration related.
I am extremely grateful that some people have created awesome libraries like strong migrations https://github.com/ankane/strong_migrations. Even if you are not using rails, bookmark its readme, it is an awesome cheat-sheet when writing a migration.
- Best practices as code using RuboCop
-
Why I Enjoy PostgreSQL – Infrastructure Engineer's Perspective
I would suggest taking a look at strong migrations[1]. It's a rails project, but the readme does a great job explaining what it checks for and what safe alternative to use instead. I still link to their explanations in PRs for non-rails projects.
-
Database... or Goose?
Nice one! Personally, I've been using https://github.com/ankane/strong_migrations to cover this case.
-
Ten Ruby gems for Rails you should definitely know about
StrongMigrations
-
Elixir and Phoenix after two years
> Ecto prevents N+1 queries by default, which I think is clearly better.
To be fair...
If you want to protect yourself from these with Rails you can install Bullet[0] and get protection through in your face notifications, and you have the option to let it slide because you're taking advantage of caching with Rails and in this case you know what you're getting into and the N+1 query with caching ends up being better because you understand your domain.
Rails also has the strong migrations[1] gem which is a huge help for not shooting yourself in the foot for running migrations in production by helping you avoid table locks and other issues / errors. But AFAIK there's no Ecto equivalent, but strong migrations is really really useful.
Rails also has the data-migrate gem which is a nice little abstraction for splitting out your schema changes and backfilling data in an automated way. There's nothing like with Ecto. This one isn't as useful as strong migrations IMO but it's still very handy to have this problem taken care of for you without having to re-invent a new strategy in every project or copy code over.
Basically all 3 of these things are something I'd use in every project in Rails but with Phoenix I wouldn't have these things except for N+1 query protection.
[0]: https://github.com/flyerhzm/bullet
Large Hadron Migrator
-
GitHub downtime root cause analysis
No you didn't. They're doing what is often referred as "online schema change" using https://github.com/github/gh-ost (but the concept is the same than percona's pt-online-schema-change, or https://github.com/soundcloud/lhm.
-
Database... or Goose?
Is there anything similar for MySQL? There is https://github.com/soundcloud/lhm but it's pretty much outdated nowadays
-
Do you use migrations for data manipulations? What are the pro's and con's ?
I may do it from the console or a task if I wanted to modify a large number of records, e.g. something in my Users table. I think you need a sense of how long the update will take - I'm not sure if there's any issue with migrations timing out or such like. If I modify my Users schema it takes 5 minutes or so as it has to make a copy of the table and swap it in and that works fine - https://github.com/soundcloud/lhm
What are some alternatives?
safe-pg-migrations - Make your PostgreSQL migrations safe
Squasher - Squasher - squash your old migrations in a single command
Lol DBA - lol_dba is a small package of rake tasks that scan your application models and displays a list of columns that probably should be indexed. Also, it can generate .sql migration scripts.
Foreigner - Adds foreign key helpers to migrations and correctly dumps foreign keys to schema.rb
BatchLoader - :zap: Powerful tool for avoiding N+1 DB or HTTP queries
PgHero - A performance dashboard for Postgres
Seedbank - Seedbank gives your seed data a little structure. Create seeds for each environment, share seeds between environments and specify dependencies to load your seeds in order. All nicely integrated with simple rake tasks.
Shiba - Catch bad SQL queries before they cause problems in production
money-rails - Integration of RubyMoney - Money with Rails
phony_rails - This Gem adds useful methods to your Rails app to validate, display and save phone numbers. It uses the super awesome Phony gem (https://github.com/floere/phony).
PgDriveBackup - Simple solution to make encrypted with ccrypt PostgreSQL backups and storing on Google Drive API
Polo - Polo travels through your database and creates sample snapshots so you can work with real world data in development.