class ActiveRecord::Migration::CheckPending
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
Public Class Methods
new(app, file_watcher: ActiveSupport::FileUpdateChecker)
click to toggle source
# File lib/active_record/migration.rb, line 579 def initialize(app, file_watcher: ActiveSupport::FileUpdateChecker) @app = app @needs_check = true @mutex = Mutex.new @file_watcher = file_watcher end
Public Instance Methods
call(env)
click to toggle source
# File lib/active_record/migration.rb, line 586 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
Private Instance Methods
build_watcher(&block)
click to toggle source
# File lib/active_record/migration.rb, line 605 def build_watcher(&block) paths = Array(connection.migration_context.migrations_paths) @file_watcher.new([], paths.index_with(["rb"]), &block) end
connection()
click to toggle source
# File lib/active_record/migration.rb, line 610 def connection ActiveRecord::Base.connection end