Class: SourceMonitor::Setup::Verification::PendingMigrationsVerifier

Inherits:
Object
  • Object
show all
Defined in:
lib/source_monitor/setup/verification/pending_migrations_verifier.rb

Constant Summary collapse

MIGRATION_TIMESTAMP_PATTERN =
/\A\d+_/

Instance Method Summary collapse

Constructor Details

#initialize(engine_migrations_path: default_engine_migrations_path, host_migrations_path: default_host_migrations_path, migration_context: default_migration_context) ⇒ PendingMigrationsVerifier

Returns a new instance of PendingMigrationsVerifier.



9
10
11
12
13
14
15
16
17
# File 'lib/source_monitor/setup/verification/pending_migrations_verifier.rb', line 9

def initialize(
  engine_migrations_path: default_engine_migrations_path,
  host_migrations_path: default_host_migrations_path,
  migration_context: default_migration_context
)
  @engine_migrations_path = engine_migrations_path
  @host_migrations_path = host_migrations_path
  @migration_context = migration_context
end

Instance Method Details

#callObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/source_monitor/setup/verification/pending_migrations_verifier.rb', line 19

def call
  engine_names = source_monitor_migration_names(engine_migrations_path)
  return ok_result("No SourceMonitor engine migrations found") if engine_names.empty?

  host_names = migration_names(host_migrations_path)
  missing = engine_names - host_names

  if missing.any?
    warning_result(
      "#{missing.size} SourceMonitor migration(s) not copied to host: #{missing.join(', ')}",
      "Run `bin/rails source_monitor:upgrade` or `bin/rails railties:install:migrations FROM=source_monitor`"
    )
  elsif migration_context.needs_migration?
    warning_result(
      "All SourceMonitor migrations are copied but some migrations are pending",
      "Run `bin/rails db:migrate` to apply pending migrations"
    )
  else
    ok_result("All SourceMonitor migrations are present and up to date")
  end
rescue StandardError => e
  error_result(
    "Migration verification failed: #{e.message}",
    "Check database connectivity and migration file permissions"
  )
end