Class: DohDb::MigrateAnalyzer
- Inherits:
-
Object
- Object
- DohDb::MigrateAnalyzer
- 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
- #check(migrate_name) ⇒ Object
-
#initialize(database) ⇒ MigrateAnalyzer
constructor
A new instance of MigrateAnalyzer.
- #verify(migrate_name) ⇒ Object
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 |