about summary refs log tree commit diff
path: root/lib/generators
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-08-13 13:40:01 +0200
committerGitHub <noreply@github.com>2018-08-13 13:40:01 +0200
commit018a9e4e7fdfac0f2e482f4b5fa66247afbc2ddb (patch)
tree2483cbc34609868ac905f43752086c467b9b2bcd /lib/generators
parentb7091c6c0fe057f7469a97f138c3e2451d95a28f (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 'lib/generators')
-rw-r--r--lib/generators/post_deployment_migration_generator.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/generators/post_deployment_migration_generator.rb b/lib/generators/post_deployment_migration_generator.rb
new file mode 100644
index 000000000..798c01b88
--- /dev/null
+++ b/lib/generators/post_deployment_migration_generator.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+require 'rails/generators'
+
+module Rails
+  class PostDeploymentMigrationGenerator < Rails::Generators::NamedBase
+    def create_migration_file
+      timestamp = Time.zone.now.strftime('%Y%m%d%H%M%S')
+
+      template 'migration.rb', "db/post_migrate/#{timestamp}_#{file_name}.rb"
+    end
+
+    def migration_class_name
+      file_name.camelize
+    end
+  end
+end