Module: DbCharmer::MultiDbMigrations::ClassMethods

Defined in:
lib/db_charmer/multi_db_migrations.rb

Instance Method Summary collapse

Instance Method Details

#db_magic(opts = {}) ⇒ Object

Raises:

  • (ArgumentError)


36
37
38
39
# File 'lib/db_charmer/multi_db_migrations.rb', line 36

def db_magic(opts = {})
  raise ArgumentError, "No connection name - no magic!" unless opts[:connection]
  works_on_db(opts[:connection])
end

#hijack_connection!Object



9
10
11
12
13
14
15
16
# File 'lib/db_charmer/multi_db_migrations.rb', line 9

def hijack_connection!
  class << self
    def connection
#            puts "DEBUG: Retrieving migration connection"
      MigrationAbstractClass.connection
    end
  end
end

#on_db(db_name) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/db_charmer/multi_db_migrations.rb', line 18

def on_db(db_name)
  hijack_connection!
  announce "Switching connection to #{db_name}"
  old_proxy = MigrationAbstractClass.db_charmer_connection_proxy
  MigrationAbstractClass.switch_connection_to(db_name, DbCharmer.migration_connections_should_exist?)
  yield
ensure
  announce "Checking all database connections"
  ActiveRecord::Base.verify_active_connections!
  announce "Switching connection back to default"
  MigrationAbstractClass.switch_connection_to(old_proxy)
end

#works_on_db(db_name) ⇒ Object



31
32
33
34
# File 'lib/db_charmer/multi_db_migrations.rb', line 31

def works_on_db(db_name)
  hijack_connection!
  MigrationAbstractClass.switch_connection_to(db_name, DbCharmer.migration_connections_should_exist?)
end