diff --git a/scripts/regenerate-schema b/scripts/regenerate-schema index 7ea89488f09efbd14208bb68b015960634fcdae6..8ec14f36a5c9f1d2b810b9bc72f651e8d5d74056 100755 --- a/scripts/regenerate-schema +++ b/scripts/regenerate-schema @@ -2,6 +2,8 @@ # frozen_string_literal: true +ENV['RAILS_ENV'] = 'test' + require 'optparse' require 'open3' require 'fileutils' @@ -49,6 +51,7 @@ class SchemaRegenerator # # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135085#note_1628210334 for more info. # + load_tasks drop_db checkout_ref checkout_clean_schema @@ -67,6 +70,11 @@ class SchemaRegenerator private + def load_tasks + require_relative '../config/environment' + Gitlab::Application.load_tasks + end + ## # Git checkout +CI_COMMIT_SHA+. # @@ -181,25 +189,25 @@ class SchemaRegenerator ## # Run rake task to drop the database. def drop_db - run %q(bin/rails db:drop RAILS_ENV=test) + run_rake_task 'db:drop' end ## # Run rake task to setup the database. def setup_db - run %q(bin/rails db:setup RAILS_ENV=test) + run_rake_task 'db:setup' end ## # Run rake task to run migrations. def migrate - run %q(bin/rails db:migrate RAILS_ENV=test) + run_rake_task 'db:migrate' end ## # Run rake task to dump schema. def dump_schema - run %q(bin/rails db:schema:dump RAILS_ENV=test) + run_rake_task 'db:schema:dump' end ## @@ -226,6 +234,15 @@ class SchemaRegenerator stdout_str end + def run_rake_task(*tasks, env: {}) + Array.wrap(tasks).each do |task| + env.each { |k, v| ENV[k.to_s] = v.to_s } + + puts "\e[32m$ bin/rails #{task} RAILS_ENV=test #{env.map { |m| m.join('=') }.join(' ')}\e[37m" + Rake::Task[task].invoke + end + end + ## # Return the base commit between source and target branch. def merge_base