Project

General

Profile

Feature #36933 » 0001-In-production-mode-check-for-pending-migration-on-bo.patch

Marius BĂLTEANU, 2025-09-07 11:32

View differences:

config/additional_environment.rb.example
13 13
#   # set up external systems like Sidekiq and Redis.
14 14
#   config.active_job.queue_adapter = :inline
15 15
#
16
#   Halt boot if there are pending migrations
17
#   config.redmine_halt_on_pending_migrations = true
16 18
#   ...
17 19
#
18 20

  
config/application.rb
107 107
      :same_site => :lax
108 108
    )
109 109

  
110
    # Configure redmine_halt_on_pending_migrations only for production so that additional environment file
111
    # can change it (environments/ENV.rb would take precedence over it)
112
    config.redmine_halt_on_pending_migrations = false if Rails.env.production?
113

  
110 114
    if File.exist?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
111 115
      instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
112 116
    end
config/initializers/05-check_pending_migrations.rb
1
if Rails.env.production? && (defined?(Rails::Server) || defined?(Rails::Console))
2
  begin
3
    ActiveRecord::Migration.check_all_pending!
4

  
5
  rescue ActiveRecord::PendingMigrationError
6
    if Rails.configuration.redmine_halt_on_pending_migrations
7
      error_message = "\e[31m[HALT] Pending migrations found. Boot process is stopping.\e[0m"
8

  
9
      puts "\n#{'=' * 60}\n"
10
      puts error_message
11
      puts "Please run `bundle exec rake db:migrate` to apply migrations."
12
      puts "#{'=' * 60}\n\n"
13

  
14
      # Abort the process with a non-zero exit code to indicate failure.
15
      abort
16
    else
17
      warning_message = "\e[33m[WARNING] You have pending migrations. Run `bundle exec rake db:migrate` to apply them.\e[0m"
18

  
19
      puts "\n#{'=' * 60}\n"
20
      puts warning_message
21
      puts "#{'=' * 60}\n\n"
22
    end
23
  end
24
end
(2-2/2)