Module: UseDb::Migrator

Defined in:
lib/use_db/migration.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/use_db/migration.rb', line 41

def self.included(base)
  unless base.respond_to?(:get_all_versions_without_connection_swap)
    base.extend(ClassMethods)
    base.alias_method_chain( :record_version_state_after_migrating, :connection_swap
      ) unless base.methods.include?(:record_version_state_after_migrating_without_connection_swap)
    base.class_eval do
      class << self
        alias_method_chain :get_all_versions, :connection_swap
      end
    end 
  end 
end

Instance Method Details

#record_version_state_after_migrating_with_connection_swap(version) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/use_db/migration.rb', line 67

def record_version_state_after_migrating_with_connection_swap(version)
  just_migrated = migrations.detect { |m| m.version == version }
  load(just_migrated.filename)
  migration_model = just_migrated.name.constantize
  if migration_model.respond_to?(:database_model)
    ar_model = migration_model.database_model.constantize
    ar_model.connection.initialize_schema_migrations_table
    sm_table = self.class.schema_migrations_table_name
    @migrated_versions ||= []
    if down?
      @migrated_versions.delete(version.to_i)
      ar_model.connection.update("DELETE FROM #{sm_table} WHERE version = '#{version}'")
    else
      @migrated_versions.push(version.to_i).sort!
      ar_model.connection.insert("INSERT INTO #{sm_table} (version) VALUES ('#{version}')")
    end
  else
    record_version_state_after_migrating_without_connection_swap(version)
  end
end