glebpom-db-charmer 1.1.5 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -2,11 +2,11 @@ begin
2
2
  require 'jeweler'
3
3
  Jeweler::Tasks.new do |gemspec|
4
4
  gemspec.name = 'db-charmer'
5
- gemspec.summary = 'ActiveRecord Connections Magic'
5
+ gemspec.summary = 'ActiveRecord Connections Magic (qik.com version)'
6
6
  gemspec.description = 'ActiveRecord Connections Magic (slaves, multiple connections, etc)'
7
- gemspec.email = 'alexey@kovyrin.net'
8
- gemspec.homepage = 'http://github.com/kovyrin/db-charmer'
9
- gemspec.authors = ['Alexey Kovyrin']
7
+ gemspec.email = 'gleb.pomykalov@qik.com'
8
+ gemspec.homepage = 'http://github.com/glebpom/db-charmer'
9
+ gemspec.authors = ['Alexey Kovyrin', 'Gleb Pomykalov']
10
10
 
11
11
  gemspec.add_dependency('rails', '>= 2.2.0')
12
12
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.3
1
+ 1.3.0
data/db-charmer.gemspec CHANGED
@@ -5,13 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{db-charmer}
8
- s.version = "1.1.5"
8
+ s.version = "1.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Alexey Kovyrin"]
12
- s.date = %q{2009-09-18}
11
+ s.authors = ["Alexey Kovyrin", "Gleb Pomykalov"]
12
+ s.date = %q{2009-09-25}
13
13
  s.description = %q{ActiveRecord Connections Magic (slaves, multiple connections, etc)}
14
- s.email = %q{alexey@kovyrin.net}
14
+ s.email = %q{gleb.pomykalov@qik.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.rdoc"
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  "db-charmer.gemspec",
27
27
  "init.rb",
28
28
  "lib/db_charmer.rb",
29
+ "lib/db_charmer/action_controller_extensions.rb",
29
30
  "lib/db_charmer/active_record_extensions.rb",
30
31
  "lib/db_charmer/association_proxy.rb",
31
32
  "lib/db_charmer/connection_factory.rb",
@@ -36,11 +37,11 @@ Gem::Specification.new do |s|
36
37
  "lib/db_charmer/multi_db_migrations.rb",
37
38
  "lib/db_charmer/multi_db_proxy.rb"
38
39
  ]
39
- s.homepage = %q{http://github.com/kovyrin/db-charmer}
40
+ s.homepage = %q{http://github.com/glebpom/db-charmer}
40
41
  s.rdoc_options = ["--charset=UTF-8"]
41
42
  s.require_paths = ["lib"]
42
43
  s.rubygems_version = %q{1.3.5}
43
- s.summary = %q{ActiveRecord Connections Magic}
44
+ s.summary = %q{ActiveRecord Connections Magic (qik.com version)}
44
45
 
45
46
  if s.respond_to? :specification_version then
46
47
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -0,0 +1,40 @@
1
+ module DbCharmer
2
+ module ActionControllerExtensions
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ def force_master_db(*models)
9
+ models_array = case models
10
+ when String, Symbol
11
+ [models]
12
+ when Array
13
+ models
14
+ when nil
15
+ #use all models
16
+ else
17
+ raise ArgumentError, "You should specify correct list of models"
18
+ end.map { |m| m.to_s.camelize.constantize }
19
+
20
+ old_proxies = {}
21
+ append_around_filter do |c,a|
22
+ begin
23
+ models_array.each do |model|
24
+ model.db_charmer_connection_level += 1
25
+ old_proxies[model.object_id] = model.db_charmer_connection_proxy
26
+ model.switch_connection_to(nil, DbCharmer.migration_connections_should_exist?)
27
+ end
28
+ a.call
29
+ ensure
30
+ models_array.each do |model|
31
+ model.switch_connection_to(old_proxies[model.object_id], DbCharmer.migration_connections_should_exist?)
32
+ model.db_charmer_connection_level -= 1
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ end
@@ -27,7 +27,7 @@ module DbCharmer
27
27
  private
28
28
 
29
29
  def first_level_on_slave
30
- if db_charmer_top_level_connection?
30
+ if db_charmer_top_level_connection? && on_master.connection.open_transactions.zero?
31
31
  on_slave { yield }
32
32
  else
33
33
  yield
data/lib/db_charmer.rb CHANGED
@@ -56,3 +56,9 @@ ActiveRecord::Migration.extend(DbCharmer::MultiDbMigrations::ClassMethods)
56
56
 
57
57
  # Enable the magic
58
58
  ActiveRecord::Base.extend(DbCharmer::DbMagic::ClassMethods)
59
+
60
+ #Extending ActionController
61
+ puts "Extending ActionController..."
62
+ require 'db_charmer/action_controller_extensions'
63
+ ActionController::Base.send :include, DbCharmer::ActionControllerExtensions
64
+
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glebpom-db-charmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Kovyrin
8
+ - Gleb Pomykalov
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-09-18 00:00:00 -07:00
13
+ date: 2009-09-25 00:00:00 -07:00
13
14
  default_executable:
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
@@ -23,7 +24,7 @@ dependencies:
23
24
  version: 2.2.0
24
25
  version:
25
26
  description: ActiveRecord Connections Magic (slaves, multiple connections, etc)
26
- email: alexey@kovyrin.net
27
+ email: gleb.pomykalov@qik.com
27
28
  executables: []
28
29
 
29
30
  extensions: []
@@ -41,6 +42,7 @@ files:
41
42
  - db-charmer.gemspec
42
43
  - init.rb
43
44
  - lib/db_charmer.rb
45
+ - lib/db_charmer/action_controller_extensions.rb
44
46
  - lib/db_charmer/active_record_extensions.rb
45
47
  - lib/db_charmer/association_proxy.rb
46
48
  - lib/db_charmer/connection_factory.rb
@@ -51,7 +53,7 @@ files:
51
53
  - lib/db_charmer/multi_db_migrations.rb
52
54
  - lib/db_charmer/multi_db_proxy.rb
53
55
  has_rdoc: false
54
- homepage: http://github.com/kovyrin/db-charmer
56
+ homepage: http://github.com/glebpom/db-charmer
55
57
  licenses:
56
58
  post_install_message:
57
59
  rdoc_options:
@@ -76,6 +78,6 @@ rubyforge_project:
76
78
  rubygems_version: 1.3.5
77
79
  signing_key:
78
80
  specification_version: 3
79
- summary: ActiveRecord Connections Magic
81
+ summary: ActiveRecord Connections Magic (qik.com version)
80
82
  test_files: []
81
83