Class: DBGeni::MigrationCLI
- Inherits:
-
Object
- Object
- DBGeni::MigrationCLI
- Defined in:
- lib/dbgeni/migration_cli.rb
Direct Known Subclasses
Instance Method Summary collapse
- #applied_and_broken_migrations ⇒ Object
- #applied_migrations ⇒ Object
-
#apply_all_migrations(force = nil) ⇒ Object
Applying.
- #apply_list_of_migrations(migration_list, force = nil) ⇒ Object
- #apply_migration(migration, force = nil) ⇒ Object
- #apply_next_migration(force = nil) ⇒ Object
- #apply_until_migration(migration_name, force = nil) ⇒ Object
-
#initialize(base_installer, config, logger) ⇒ MigrationCLI
constructor
A new instance of MigrationCLI.
- #list_of_migrations(list) ⇒ Object
- #migrations ⇒ Object
- #outstanding_migrations ⇒ Object
-
#rollback_all_migrations(force = nil) ⇒ Object
rolling back.
- #rollback_last_migration(force = nil) ⇒ Object
- #rollback_list_of_migrations(migration_list, force = nil) ⇒ Object
- #rollback_migration(migration, force = nil) ⇒ Object
- #rollback_until_migration(migration_name, force = nil) ⇒ Object
Constructor Details
#initialize(base_installer, config, logger) ⇒ MigrationCLI
Returns a new instance of MigrationCLI.
4 5 6 7 8 9 |
# File 'lib/dbgeni/migration_cli.rb', line 4 def initialize(base_installer, config, logger) @base = base_installer @config = config @logger = logger set_plugin_hooks end |
Instance Method Details
#applied_and_broken_migrations ⇒ Object
28 29 30 31 32 |
# File 'lib/dbgeni/migration_cli.rb', line 28 def applied_and_broken_migrations ensure_initialized migrations @migration_list.applied_and_broken(@config, connection) end |
#applied_migrations ⇒ Object
22 23 24 25 26 |
# File 'lib/dbgeni/migration_cli.rb', line 22 def applied_migrations ensure_initialized migrations @migration_list.applied(@config, connection) end |
#apply_all_migrations(force = nil) ⇒ Object
Applying
42 43 44 45 46 47 48 49 |
# File 'lib/dbgeni/migration_cli.rb', line 42 def apply_all_migrations(force=nil) ensure_initialized migrations = outstanding_migrations if migrations.length == 0 raise DBGeni::NoOutstandingMigrations end apply_migration_list(migrations, force) end |
#apply_list_of_migrations(migration_list, force = nil) ⇒ Object
72 73 74 75 76 |
# File 'lib/dbgeni/migration_cli.rb', line 72 def apply_list_of_migrations(migration_list, force=nil) ensure_initialized migration_files = list_of_migrations(migration_list) apply_migration_list(migration_files, force) end |
#apply_migration(migration, force = nil) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/dbgeni/migration_cli.rb', line 79 def apply_migration(migration, force=nil) ensure_initialized begin run_plugin(@before_up_run_plugin, migration) migration.apply!(@config, connection, force) @logger.info "Applied #{migration.to_s}" run_plugin(@after_up_run_plugin, migration) rescue DBGeni::MigratorCouldNotConnect @logger.error "Failed to connect to the database CLI" raise DBGeni::MigrationApplyFailed, migration.to_s rescue DBGeni::MigrationApplyFailed @logger.error "Failed #{migration.to_s}. Errors in #{migration.logfile}\n\n#{migration.}\n\n" raise DBGeni::MigrationApplyFailed, migration.to_s end end |
#apply_next_migration(force = nil) ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/dbgeni/migration_cli.rb', line 51 def apply_next_migration(force=nil) ensure_initialized migrations = outstanding_migrations if migrations.length == 0 raise DBGeni::NoOutstandingMigrations end apply_migration_list([migrations.first], force) end |
#apply_until_migration(migration_name, force = nil) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/dbgeni/migration_cli.rb', line 60 def apply_until_migration(migration_name, force=nil) ensure_initialized milestone = find_migration(migration_name) outstanding = outstanding_migrations index = outstanding.index milestone unless index # milestone migration doesn't exist or is already applied. raise MigrationNotOutstanding, milestone.to_s end apply_migration_list(outstanding[0..index], force) end |
#list_of_migrations(list) ⇒ Object
34 35 36 37 38 |
# File 'lib/dbgeni/migration_cli.rb', line 34 def list_of_migrations(list) ensure_initialized migrations @migration_list.list(list, @config, connection) end |
#migrations ⇒ Object
11 12 13 14 |
# File 'lib/dbgeni/migration_cli.rb', line 11 def migrations @migration_list ||= DBGeni::MigrationList.new(@config.migration_directory) unless @migration_list @migration_list.migrations end |
#outstanding_migrations ⇒ Object
16 17 18 19 20 |
# File 'lib/dbgeni/migration_cli.rb', line 16 def outstanding_migrations ensure_initialized migrations @migration_list.outstanding(@config, connection) end |
#rollback_all_migrations(force = nil) ⇒ Object
rolling back
97 98 99 100 101 102 103 104 |
# File 'lib/dbgeni/migration_cli.rb', line 97 def rollback_all_migrations(force=nil) ensure_initialized migrations = applied_and_broken_migrations.reverse if migrations.length == 0 raise DBGeni::NoAppliedMigrations end apply_migration_list(migrations, force, false) end |
#rollback_last_migration(force = nil) ⇒ Object
106 107 108 109 110 111 112 113 114 |
# File 'lib/dbgeni/migration_cli.rb', line 106 def rollback_last_migration(force=nil) ensure_initialized migrations = applied_and_broken_migrations if migrations.length == 0 raise DBGeni::NoAppliedMigrations end # the most recent one is at the end of the array!! apply_migration_list([migrations.last], force, false) end |
#rollback_list_of_migrations(migration_list, force = nil) ⇒ Object
130 131 132 133 134 |
# File 'lib/dbgeni/migration_cli.rb', line 130 def rollback_list_of_migrations(migration_list, force=nil) ensure_initialized migration_files = list_of_migrations(migration_list).reverse apply_migration_list(migration_files, force, false) end |
#rollback_migration(migration, force = nil) ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/dbgeni/migration_cli.rb', line 136 def rollback_migration(migration, force=nil) ensure_initialized begin run_plugin(@before_down_run_plugin, migration) migration.rollback!(@config, connection, force) @logger.info "Rolledback #{migration.to_s}" run_plugin(@after_down_run_plugin, migration) rescue DBGeni::MigratorCouldNotConnect @logger.error "Failed to connect to the database CLI" raise DBGeni::MigrationApplyFailed, migration.to_s rescue DBGeni::MigrationApplyFailed @logger.error "Failed #{migration.to_s}. Errors in #{migration.logfile}\n\n#{migration.}\n\n" raise DBGeni::MigrationApplyFailed, migration.to_s end end |
#rollback_until_migration(migration_name, force = nil) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/dbgeni/migration_cli.rb', line 116 def rollback_until_migration(migration_name, force=nil) ensure_initialized milestone = find_migration(migration_name) applied = applied_and_broken_migrations.reverse index = applied.index milestone unless index # milestone migration doesn't exist or is already applied. raise DBGeni::MigrationNotApplied, milestone.to_s end # Note the triple ... in the range to exclude the end element # This is because we don't want to rollback the final migration as its upto but not including apply_migration_list(applied[0...index], force, false) end |