Class: ActiveRecord::Migration::CheckPending
Relationships & Source Files | |
Inherits: | Object |
Defined in: | activerecord/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
.
Class Method Summary
Instance Method Summary
- #call(env)
- #build_watcher(&block) private
Constructor Details
.new(app, file_watcher: ActiveSupport::FileUpdateChecker) ⇒ CheckPending
# File 'activerecord/lib/active_record/migration.rb', line 649
def initialize(app, file_watcher: ActiveSupport::FileUpdateChecker) @app = app @needs_check = true @mutex = Mutex.new @file_watcher = file_watcher end
Instance Method Details
#build_watcher(&block) (private)
[ GitHub ]# File 'activerecord/lib/active_record/migration.rb', line 675
def build_watcher(&block) current_environment = ActiveRecord::ConnectionHandling::DEFAULT_ENV.call all_configs = ActiveRecord::Base.configurations.configs_for(env_name: current_environment) paths = all_configs.flat_map { |config| config.migrations_paths || Migrator.migrations_paths }.uniq @file_watcher.new([], paths.index_with(["rb"]), &block) end
#call(env)
[ GitHub ]# File 'activerecord/lib/active_record/migration.rb', line 656
def call(env) @mutex.synchronize do @watcher ||= build_watcher do @needs_check = true ActiveRecord::Migration.check_pending_migrations @needs_check = false end if @needs_check @watcher.execute else @watcher.execute_if_updated end end @app.call(env) end