Class: ActiveRecord::Migration::CheckPending

Inherits:
Object
  • Object
show all
Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/migration.rb

Overview

This class is used to verify that all migrations have been run before loading a web page if config.active_record.migration_error is set to :page_load.

Instance Method Summary collapse

Constructor Details

#initialize(app, file_watcher: ActiveSupport::FileUpdateChecker) ⇒ CheckPending

Returns a new instance of CheckPending.



581
582
583
584
585
586
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/migration.rb', line 581

def initialize(app, file_watcher: ActiveSupport::FileUpdateChecker)
  @app = app
  @needs_check = true
  @mutex = Mutex.new
  @file_watcher = file_watcher
end

Instance Method Details

#call(env) ⇒ Object



588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/migration.rb', line 588

def call(env)
  @mutex.synchronize do
    @watcher ||= build_watcher do
      @needs_check = true
      ActiveRecord::Migration.check_pending!(connection)
      @needs_check = false
    end

    if @needs_check
      @watcher.execute
    else
      @watcher.execute_if_updated
    end
  end

  @app.call(env)
end