diff options
author | DJ Mountney <david@twkie.net> | 2018-09-11 18:41:14 -0700 |
---|---|---|
committer | DJ Mountney <david@twkie.net> | 2018-09-11 18:41:14 -0700 |
commit | 76cfe4f1fdadf0b4e43d066ffccbe34fbfcb9a80 (patch) | |
tree | e955231d7515168788b6a6872f774e05fd84491e /lib | |
parent | f6097cbfaa1fae7cceef583bb3dbbd85286c80c2 (diff) | |
download | gitlab-ce-76cfe4f1fdadf0b4e43d066ffccbe34fbfcb9a80.tar.gz |
Ensure the schema is loaded with post_migrations included
If doing a schema load, the post_migrations should also be marked as up,
even if SKIP_POST_DEPLOYMENT_MIGRATIONS was set, otherwise future
migration runs will be broken.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/database.rb | 16 | ||||
-rw-r--r-- | lib/tasks/gitlab/db.rake | 2 |
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 |