]> cat aescling's git repositories - mastodon.git/commitdiff
Add documentation about the migration hack
authorThibaut Girka <thib@sitedethib.com>
Wed, 20 Nov 2019 16:18:00 +0000 (17:18 +0100)
committerThibaut Girka <thib@sitedethib.com>
Wed, 20 Nov 2019 16:18:00 +0000 (17:18 +0100)
config/initializers/0_duplicate_migrations.rb
db/migrate/20180410220657_create_bookmarks.rb
db/migrate/20180831171112_create_bookmarks.rb

index 4c7440fa42e805aa5b742ccea9f2934696530e4c..d15d2b24a21c20399b9210acb66386a86d15f9c1 100644 (file)
@@ -1,3 +1,17 @@
+# Some migrations have been present in glitch-soc for a long time and have then
+# been merged in upstream Mastodon, under a different version number.
+#
+# This puts us in an uneasy situation in which if we remove upstream's
+# migration file, people migrating from upstream will end up having a conflict
+# with their already-ran migration.
+#
+# On the other hand, if we keep upstream's migration and remove our own,
+# any current glitch-soc user will have a conflict during migration.
+#
+# For lack of a better solution, as those migrations are indeed identical,
+# we decided monkey-patching Rails' Migrator to completely ignore the duplicate,
+# keeping only the one that has run, or an arbitrary one.
+
 ALLOWED_DUPLICATES = [20180410220657, 20180831171112].freeze
 
 module ActiveRecord
index 08d22c10d9e98e76047557d4816b117e7c5cc9e9..bc79022e48577bac91f08226ac1fa40310667dbe 100644 (file)
@@ -1,3 +1,6 @@
+# This migration is a duplicate of 20180831171112 and may get ignored, see
+# config/initializers/0_duplicate_migrations.rb
+
 class CreateBookmarks < ActiveRecord::Migration[5.1]
   def change
     create_table :bookmarks do |t|
@@ -7,8 +10,11 @@ class CreateBookmarks < ActiveRecord::Migration[5.1]
       t.timestamps
     end
 
-    safety_assured { add_foreign_key :bookmarks, :accounts, column: :account_id, on_delete: :cascade }
-    safety_assured { add_foreign_key :bookmarks, :statuses, column: :status_id, on_delete: :cascade }
+    safety_assured do
+      add_foreign_key :bookmarks, :accounts, column: :account_id, on_delete: :cascade
+      add_foreign_key :bookmarks, :statuses, column: :status_id, on_delete: :cascade
+    end
+
     add_index :bookmarks, [:account_id, :status_id], unique: true
   end
 end
index 27c7339c9aa3bafea712ca37208cd556b57ddda7..5d587b7e9cce0970929338058c5ab671638d4a61 100644 (file)
@@ -1,3 +1,6 @@
+# This migration is a duplicate of 20180410220657 and may get ignored, see
+# config/initializers/0_duplicate_migrations.rb
+
 class CreateBookmarks < ActiveRecord::Migration[5.1]
   def change
     create_table :bookmarks do |t|