glebpom-db-charmer 1.4.0 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.4.2
data/db-charmer.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glebpom-db-charmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Kovyrin
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-09-28 00:00:00 +04:00
13
+ date: 2009-10-01 00:00:00 +04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
data/lib/db_charmer.rb CHANGED
@@ -59,7 +59,7 @@ require 'db_charmer/multi_db_migrations'
59
59
  require 'db_charmer/multi_db_proxy'
60
60
 
61
61
  # Enable multi-db migrations
62
- ActiveRecord::Migration.extend(DbCharmer::MultiDbMigrations::ClassMethods)
62
+ ActiveRecord::Migration.extend(DbCharmer::MultiDbMigrations)
63
63
 
64
64
  # Enable the magic
65
65
  ActiveRecord::Base.extend(DbCharmer::DbMagic::ClassMethods)
@@ -61,12 +61,12 @@ module DbCharmer
61
61
 
62
62
  #-----------------------------------------------------------------------------
63
63
  def hijack_connection!
64
- # FIXME: make sure we do not do it more often then needed
65
- # puts "DEBUG: Hijacking connection for #{self.to_s}"
66
- class << self
67
- def connection
68
- db_charmer_connection_proxy || super
64
+ return if self.respond_to?(:connection_with_magic)
65
+ class << self
66
+ def connection_with_magic
67
+ db_charmer_connection_proxy || connection_without_magic
69
68
  end
69
+ alias_method_chain :connection, :magic
70
70
  end
71
71
  end
72
72
 
@@ -1,41 +1,28 @@
1
1
  module DbCharmer
2
2
  module MultiDbMigrations
3
- class MigrationAbstractClass < ActiveRecord::Base
4
- abstract_class = true
5
- hijack_connection!
6
- end
7
-
8
- module ClassMethods
9
- def hijack_connection!
10
- class << self
11
- def connection
12
- # puts "DEBUG: Retrieving migration connection"
13
- MigrationAbstractClass.connection
14
- end
15
- end
16
- end
3
+ @@multi_db_name = nil
17
4
 
18
- def on_db(db_name)
19
- hijack_connection!
20
- announce "Switching connection to #{db_name}"
21
- old_proxy = MigrationAbstractClass.db_charmer_connection_proxy
22
- MigrationAbstractClass.switch_connection_to(db_name, DbCharmer.migration_connections_should_exist?)
23
- yield
24
- ensure
25
- announce "Checking all database connections"
26
- ActiveRecord::Base.verify_active_connections!
27
- announce "Switching connection back to default"
28
- MigrationAbstractClass.switch_connection_to(old_proxy)
29
- end
5
+ def migrate_with_db_wrapper(direction)
6
+ on_db(@@multi_db_name) { migrate_without_db_wrapper(direction) }
7
+ end
30
8
 
31
- def works_on_db(db_name)
32
- hijack_connection!
33
- MigrationAbstractClass.switch_connection_to(db_name, DbCharmer.migration_connections_should_exist?)
34
- end
9
+ def on_db(db_name)
10
+ announce "Switching connection to #{db_name}"
11
+ old_proxy = ActiveRecord::Base.db_charmer_connection_proxy
12
+ ActiveRecord::Base.switch_connection_to(db_name, DbCharmer.migration_connections_should_exist?)
13
+ yield
14
+ ensure
15
+ announce "Checking all database connections"
16
+ ActiveRecord::Base.verify_active_connections!
17
+ announce "Switching connection back to default"
18
+ ActiveRecord::Base.switch_connection_to(old_proxy)
19
+ end
35
20
 
36
- def db_magic(opts = {})
37
- raise ArgumentError, "No connection name - no magic!" unless opts[:connection]
38
- works_on_db(opts[:connection])
21
+ def db_magic(opts = {})
22
+ raise ArgumentError, "No connection name - no magic!" unless opts[:connection]
23
+ @@multi_db_name = opts[:connection]
24
+ class << self
25
+ alias_method_chain :migrate, :db_wrapper
39
26
  end
40
27
  end
41
28
  end
@@ -38,7 +38,7 @@ module DbCharmer
38
38
  module MasterSlaveClassMethods
39
39
  def on_slave(con = nil, proxy_target = nil, &block)
40
40
  con ||= db_charmer_random_slave
41
- raise ArgumentError, "No slaves found in the class and no slave connection given" unless con
41
+ raise ArgumentError, "No slaves found in the class and no slave connection given" if con.nil? && DbCharmer.switch_connection?
42
42
  on_db(con, proxy_target, &block)
43
43
  end
44
44
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glebpom-db-charmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Kovyrin
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-09-28 00:00:00 +04:00
13
+ date: 2009-10-01 00:00:00 +04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency