about summary refs log tree commit diff
path: root/config/initializers/0_post_deployment_migrations.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-08-13 13:40:01 +0200
committerThibG <thib@sitedethib.com>2018-08-13 18:17:20 +0200
commitfcb527cdd6abda023a5e1de061f6cf7b1dd27205 (patch)
treec46b0364edd1fb7675775cca0126d9bec34c493c /config/initializers/0_post_deployment_migrations.rb
parent9e4ac1c12c64bd6a3635eb88d424c152299cc732 (diff)
Add post-deployment migration system (#8182)
Adopted from GitLab CE. Generate new migration with:

    rails g post_deployment_migration name_of_migration_here

By default they are run together with db:migrate. To not run them,
the env variable SKIP_POST_DEPLOYMENT_MIGRATIONS must be set

Code by Yorick Peterse <yorickpeterse@gmail.com>, see also:

https://gitlab.com/gitlab-org/gitlab-ce/commit/83c8241160ed48ab066e2c5bd58d0914a745197c
Diffstat (limited to 'config/initializers/0_post_deployment_migrations.rb')
-rw-r--r--config/initializers/0_post_deployment_migrations.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/config/initializers/0_post_deployment_migrations.rb b/config/initializers/0_post_deployment_migrations.rb
new file mode 100644
index 000000000..61121ccd7
--- /dev/null
+++ b/config/initializers/0_post_deployment_migrations.rb
@@ -0,0 +1,15 @@
+# Post deployment migrations are included by default. This file must be loaded
+# before other initializers as Rails may otherwise memoize a list of migrations
+# excluding the post deployment migrations.
+
+unless ENV['SKIP_POST_DEPLOYMENT_MIGRATIONS']
+  Rails.application.config.paths['db'].each do |db_path|
+    path = Rails.root.join(db_path, 'post_migrate').to_s
+
+    Rails.application.config.paths['db/migrate'] << path
+
+    # Rails memoizes migrations at certain points where it won't read the above
+    # path just yet. As such we must also update the following list of paths.
+    ActiveRecord::Migrator.migrations_paths << path
+  end
+end