Class: DohDb::MigrateAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/dohmysql/migrate/analyzer.rb

Constant Summary collapse

CHECK_DATABASE =
'dohmysql_migrate_check'
FILE_PREFIX =
'/tmp/dohmysql_migrate_check_'

Instance Method Summary collapse

Constructor Details

#initialize(database) ⇒ MigrateAnalyzer

Returns a new instance of MigrateAnalyzer.



11
12
13
14
15
16
# File 'lib/dohmysql/migrate/analyzer.rb', line 11

def initialize(database)
  @database = database
  @directory = File.join(DohDb.sql_files_path(@database), 'migrate')
  @sql_original = FILE_PREFIX + "#{@database}_original.sql"
  @sql_final = FILE_PREFIX + "#{@database}_final.sql"
end

Instance Method Details

#check(migrate_name) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dohmysql/migrate/analyzer.rb', line 18

def check(migrate_name)
  DohDb::DatabaseCreator.new.create_database_copy(CHECK_DATABASE, @database, true, false)
  dump_sql(@sql_original)

  runner = DohDb::MigrateRunner.new(@database)

  success, msg = runner.apply(migrate_name)
  return [success, msg] if !success

  success, msg = runner.revert(migrate_name)
  return [success, msg] if !success

  dump_sql(@sql_final)

  diffstr = diff(@sql_original, @sql_final)
  return [false, diffstr] unless diffstr.empty?

  File.delete(@sql_original)
  File.delete(@sql_final)

  [true, "migration #{migrate_name} checked successfully"]
end

#verify(migrate_name) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/dohmysql/migrate/analyzer.rb', line 41

def verify(migrate_name)
  DohDb::DatabaseCreator.new.create_database_copy(CHECK_DATABASE, @database, true, false)
  dump_sql(@sql_original)

  runner = DohDb::MigrateRunner.new(@database)

  success, msg = runner.apply(migrate_name)
  return [success, msg] if !success

  dump_sql(@sql_final)

  diffstr = diff(@sql_original, @sql_final)
  return [false, diffstr] unless diffstr.empty?

  File.delete(@sql_original)
  File.delete(@sql_final)

  [true, "migration #{migrate_name} verified successfully"]
end