Class: DohDb::DatabaseMigrator
Instance Method Summary collapse
- #down_filename(version) ⇒ Object
- #get_unlocked_migration ⇒ Object
-
#initialize(dest_db = nil, source_db = nil, directory = nil) ⇒ DatabaseMigrator
constructor
A new instance of DatabaseMigrator.
-
#make_version(new_version) ⇒ Object
Migrates to a specific version.
-
#rollback ⇒ Object
Rolls back one version.
- #up_filename(version) ⇒ Object
-
#update ⇒ Object
Migrates to the latest version.
Constructor Details
#initialize(dest_db = nil, source_db = nil, directory = nil) ⇒ DatabaseMigrator
Returns a new instance of DatabaseMigrator.
7 8 9 10 11 12 |
# File 'lib/doh/mysql/migrate.rb', line 7 def initialize(dest_db = nil, source_db = nil, directory = nil) @dest_db = dest_db || DohApp::config['primary_database'] @source_db = source_db || @dest_db @table = @dest_db + '.version' @directory = directory || File.join(DohApp::home, 'database', @source_db, 'migrate') end |
Instance Method Details
#down_filename(version) ⇒ Object
46 47 48 |
# File 'lib/doh/mysql/migrate.rb', line 46 def down_filename(version) filename_prefix(version) + '_down.sql' end |
#get_unlocked_migration ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/doh/mysql/migrate.rb', line 50 def get_unlocked_migration latest_version = DohDb::latest_database_version(@dest_db) previous_version, previous_svn_revision = DohDb::locked_version_info(@dest_db) raise 'you need to lock the database before adding a migration (migrate.rb -l)' if !previous_svn_revision if latest_version == previous_version upfile = up_filename(latest_version + 1) downfile = down_filename(latest_version + 1) `touch #{upfile}` `touch #{downfile}` `svn add #{upfile}` `svn add #{downfile}` else upfile = up_filename(latest_version) downfile = down_filename(latest_version) end [true, "up:#{upfile} down:#{downfile}"] end |
#make_version(new_version) ⇒ Object
Migrates to a specific version. Returns nil if true if no migrations took place, or [original_version, new_version].
32 33 34 35 36 37 38 39 40 |
# File 'lib/doh/mysql/migrate.rb', line 32 def make_version(new_version) get_original_version if new_version > @original_version make_later_version(new_version) else make_earlier_version(new_version) end migrate_result end |
#rollback ⇒ Object
Rolls back one version. Returns nil if true if no migrations took place, or [original_version, new_version].
24 25 26 27 28 |
# File 'lib/doh/mysql/migrate.rb', line 24 def rollback get_original_version make_earlier_version(@original_version - 1) migrate_result end |
#up_filename(version) ⇒ Object
42 43 44 |
# File 'lib/doh/mysql/migrate.rb', line 42 def up_filename(version) filename_prefix(version) + '_up.sql' end |
#update ⇒ Object
Migrates to the latest version. Returns nil if true if no migrations took place, or [original_version, new_version].
16 17 18 19 20 |
# File 'lib/doh/mysql/migrate.rb', line 16 def update get_original_version make_latest_version migrate_result end |