db-charmer 1.5.1 → 1.5.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.5.1
1
+ 1.5.2
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{db-charmer}
8
- s.version = "1.5.1"
8
+ s.version = "1.5.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alexey Kovyrin"]
12
- s.date = %q{2010-03-06}
12
+ s.date = %q{2010-03-10}
13
13
  s.description = %q{ActiveRecord Connections Magic (slaves, multiple connections, etc)}
14
14
  s.email = %q{alexey@kovyrin.net}
15
15
  s.extra_rdoc_files = [
@@ -6,15 +6,13 @@ module DbCharmer
6
6
  end
7
7
 
8
8
  def connection_name
9
- @connection_name
10
- end
11
-
12
- def connection_name=(name)
13
- @connection_name = name
9
+ raise "Can't find connection configuration!" unless @config
10
+ @config[:connection_name]
14
11
  end
15
12
 
16
13
  def format_log_entry_with_connection_name(message, dump = nil)
17
14
  msg = connection_name ? "[#{connection_name}] " : ''
15
+ msg = " \e[0;34;1m#{msg}\e[0m" if connection_name && ActiveRecord::Base.colorize_logging
18
16
  msg << format_log_entry_without_connection_name(message, dump)
19
17
  end
20
18
  end
@@ -7,8 +7,11 @@ module DbCharmer
7
7
  if should_exist && !config
8
8
  raise ArgumentError, "Invalid connection name (does not exist in database.yml): #{RAILS_ENV}/#{name}"
9
9
  end
10
- establish_connection(config) if config
11
- connection.connection_name = name.to_s
10
+ # If there is no config, use default one
11
+ config ||= configurations[RAILS_ENV].clone
12
+ # Pass connection name with config
13
+ config[:connection_name] = name.to_s
14
+ establish_connection(config)
12
15
  end
13
16
 
14
17
  #-----------------------------------------------------------------------------
@@ -1,38 +1,46 @@
1
+ #
2
+ # This class is used to automatically generate small abstract ActiveRecord classes
3
+ # that would then be used as a source of database connections for DbCharmer magic.
4
+ # This way we do not need to re-implement all the connection establishing code
5
+ # that ActiveRecord already has and we make our code less dependant on Rails versions.
6
+ #
1
7
  module DbCharmer
2
- class ConnectionFactory
8
+ module ConnectionFactory
3
9
  @@connection_classes = {}
4
10
 
5
11
  def self.reset!
6
12
  @@connection_classes = {}
7
13
  end
8
14
 
15
+ # Establishes connection or return an existing one from cache
9
16
  def self.connect(db_name, should_exist = false)
10
- @@connection_classes[db_name.to_s] ||= establish_connection(db_name.to_s, should_exist)
11
- # DbCharmer.logger.warn("ConnectionFactory.connect(#{db_name}) = #{@@connection_classes[db_name.to_s]}")
12
- # return @@connection_classes[db_name.to_s]
17
+ db_name = db_name.to_s
18
+ @@connection_classes[db_name] ||= establish_connection(db_name, should_exist)
13
19
  end
14
20
 
21
+ # Establish connection with a specified name
15
22
  def self.establish_connection(db_name, should_exist = false)
16
- # DbCharmer.logger.debug("Creating a connection proxy for #{db_name}")
17
23
  abstract_class = generate_abstract_class(db_name, should_exist)
18
24
  DbCharmer::ConnectionProxy.new(abstract_class)
19
25
  end
20
26
 
27
+ # Generate an abstract AR class with specified connection established
21
28
  def self.generate_abstract_class(db_name, should_exist = false)
22
- # DbCharmer.logger.info("Generating abstract connection class for #{db_name}: #{abstract_connection_class_name db_name}")
23
-
29
+ klass = abstract_connection_class_name(db_name)
30
+ # Generate class
24
31
  module_eval <<-EOF, __FILE__, __LINE__ + 1
25
- class #{abstract_connection_class_name db_name} < ActiveRecord::Base
32
+ class #{klass} < ActiveRecord::Base
26
33
  self.abstract_class = true
27
34
  establish_real_connection_if_exists(:#{db_name}, #{!!should_exist})
28
35
  end
29
36
  EOF
30
-
31
- abstract_connection_class_name(db_name).constantize
37
+ # Return class
38
+ klass.constantize
32
39
  end
33
40
 
41
+ # Generates unique names for our abstract AR classes
34
42
  def self.abstract_connection_class_name(db_name)
35
- "::AutoGeneratedAbstractConnectionClass#{db_name.camelize}"
43
+ "::AutoGeneratedAbstractConnectionClass#{db_name.to_s.camelize}"
36
44
  end
37
45
  end
38
- end
46
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 5
8
- - 1
9
- version: 1.5.1
8
+ - 2
9
+ version: 1.5.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Alexey Kovyrin
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-06 00:00:00 -05:00
17
+ date: 2010-03-10 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency