summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2018-09-19 12:29:25 +0000
committerYorick Peterse <yorickpeterse@gmail.com>2018-09-19 12:29:25 +0000
commitec33016bcd07f3806f071d574299079b67cb0a93 (patch)
tree7b8a4396db0daf796cdc0b7818ee60448cbffd28 /lib
parentc2f82fd09ea5d61e3fc5c6afc2fbb6b647c778fb (diff)
parent019d8055c5ca83e66c0587cc422bb185a588874a (diff)
downloadgitlab-ce-ec33016bcd07f3806f071d574299079b67cb0a93.tar.gz
Include post migrations when loading the schema
See merge request gitlab-org/gitlab-ce!21689
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/database.rb16
-rw-r--r--lib/tasks/gitlab/db.rake2
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index 8eacad078c8..42f9605f5ac 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -249,5 +249,21 @@ module Gitlab
end
private_class_method :database_version
+
+ def self.add_post_migrate_path_to_rails(force: false)
+ return if ENV['SKIP_POST_DEPLOYMENT_MIGRATIONS'] && !force
+
+ Rails.application.config.paths['db'].each do |db_path|
+ path = Rails.root.join(db_path, 'post_migrate').to_s
+
+ unless Rails.application.config.paths['db/migrate'].include? path
+ 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
+ end
end
end
diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake
index 69166851816..74cd70c6e9f 100644
--- a/lib/tasks/gitlab/db.rake
+++ b/lib/tasks/gitlab/db.rake
@@ -51,6 +51,8 @@ namespace :gitlab do
if ActiveRecord::Base.connection.tables.count > 1
Rake::Task['db:migrate'].invoke
else
+ # Add post-migrate paths to ensure we mark all migrations as up
+ Gitlab::Database.add_post_migrate_path_to_rails(force: true)
Rake::Task['db:schema:load'].invoke
Rake::Task['db:seed_fu'].invoke
end