Comments (5)
Going to close this out, but feel free to create a PR
from strong_migrations.
Hey @iamvery, thanks for the suggestion. I think this is best as a custom check. I imagine most of the time foreign keys need to be valid.
from strong_migrations.
Thanks for the response @ankane! I'm a little indifferent on this, but I understand your point. I'm indifferent, because I feel like if the purpose of this library is to protect users from themselves it might go so far to recommend against typical cases like this in the name of safety.
Strong Migrations detects potentially dangerous operations in migrations, prevents them from running by default, and provides instructions on safer ways to do what you want.
Either way, the custom checks are a great feature that we can take advantage of. Thank you!
from strong_migrations.
Reading about the issue more, agree that it'd be good for the gem to handle it, so happy to accept a PR. Since the validate
option was introduced in Rails 5.2, the instructions will probably need to use execute
in previous versions. There will need to be instructions for validating as well.
References:
- https://travisofthenorth.com/blog/2017/2/2/postgres-adding-foreign-keys-with-zero-downtime
- https://github.com/rails/rails/pull/27756/files
from strong_migrations.
Thanks for the follow up here! It's going to be a few days before I can dig in, but this sounds great 👍
from strong_migrations.
Related Issues (20)
- lock_timeout + lock_timeout_retries + concurrent postgres indexes HOT 2
- safety_assured not ignoring custom checks when safe_by_default is true HOT 1
- [Idea] Checks for dangerous attributes HOT 1
- add_reference + index +disable_ddl_transaction! is an unsafe pattern? HOT 1
- [Idea] Apply `safety_assured` through `revert` HOT 2
- `StrongMigration.start_after` doesn't respect version on `revert` HOT 1
- Adding a column with a default value should is safe when use mysql(5.7) as database HOT 5
- [Idea] Show check link with error message HOT 1
- Lock timeout when using `add_column` with `enum` type HOT 2
- `add_reference` with concurrent index can be dangerous HOT 2
- [Idea] Provide custom message prefix/suffix message HOT 2
- [Idea] Should add_unique_constraint be considered unsafe? HOT 3
- `StrongMigrations.start_after` does not work HOT 1
- Consider appending to ignored_columns as a best practice HOT 1
- [Idea] Ignore migrations from non-supported adapters HOT 3
- [Idea] safety_assured should require justification HOT 1
- [Idea] Adding auto incrementing primary key does not guarantee that replicas generate the same primary key values (MySQL) HOT 4
- Getting an error complaining about MariaDB Version HOT 3
- [Idea] Add these changes as default in Rails HOT 1
- [Idea] Support custom checks on TableDefinition methods
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from strong_migrations.