Class: DohDb::MigrateRunner
- Inherits:
-
Object
- Object
- DohDb::MigrateRunner
- Defined in:
- lib/dohmysql/migrate/runner.rb
Class Method Summary collapse
Instance Method Summary collapse
- #apply(migrate_name, opts) ⇒ Object
-
#initialize(database) ⇒ MigrateRunner
constructor
A new instance of MigrateRunner.
- #make(migrate_name, opts) ⇒ Object
- #revert(migrate_name, opts) ⇒ Object
Constructor Details
#initialize(database) ⇒ MigrateRunner
Returns a new instance of MigrateRunner.
6 7 8 9 10 11 |
# File 'lib/dohmysql/migrate/runner.rb', line 6 def initialize(database) @database = database @table = @database + '.migrate' @directory = File.join(DohDb.sql_files_path(@database), 'migrate') @config = DohDb::connector_instance.config end |
Class Method Details
.get_filename(directory, cmd, migrate_name, opts) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/dohmysql/migrate/runner.rb', line 47 def self.get_filename(directory, cmd, migrate_name, opts) if (cmd == 'apply') position_str = opts.runafter ? 'after' : 'before' else position_str = opts.runafter ? 'before' : 'after' end File.join(directory, "#{migrate_name}_#{position_str}_#{cmd}.sql") end |
Instance Method Details
#apply(migrate_name, opts) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/dohmysql/migrate/runner.rb', line 23 def apply(migrate_name, opts) if migrate_exist?(migrate_name) return [false, "migration #{migrate_name} has already been applied"] end fname = apply_filename(migrate_name, opts) load_sql(fname) contents = File.open(fname) {|file| file.read} Doh.db.query("INSERT INTO #@table SET migrated_at = NOW(), name = #{migrate_name.to_sql}, sql_applied = #{contents.to_sql}") [true, "migration #{migrate_name} applied successfully"] rescue Exception => excpt [false, excpt.] end |
#make(migrate_name, opts) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/dohmysql/migrate/runner.rb', line 13 def make(migrate_name, opts) apply_fname = apply_filename(migrate_name, opts) if File.exist?(apply_fname) return [false, "it appears that migration #{migrate_name} already exists"] end `touch #{apply_fname}` `touch #{revert_filename(migrate_name, opts)}` [true, "files for migration #{migrate_name} created in #{@directory}"] end |
#revert(migrate_name, opts) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/dohmysql/migrate/runner.rb', line 36 def revert(migrate_name, opts) unless migrate_exist?(migrate_name) return [false, "migration #{migrate_name} can't be reverted until it has been applied"] end load_sql(revert_filename(migrate_name, opts)) Doh.db.query("DELETE FROM #@table WHERE name = #{migrate_name.to_sql}") [true, "migration #{migrate_name} reverted successfully"] rescue Exception => excpt [false, excpt.] end |