connection_manager 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -3
- data/lib/connection_manager/using.rb +15 -34
- data/lib/connection_manager/version.rb +2 -3
- data/spec/lib/using_spec.rb +1 -13
- metadata +3 -3
data/Gemfile
CHANGED
@@ -11,7 +11,7 @@ module ConnectionManager
|
|
11
11
|
|
12
12
|
private
|
13
13
|
# We use dup here because its just too tricky to make sure we override
|
14
|
-
# all the methods
|
14
|
+
# all the methods necessary when using a child class of the model. This
|
15
15
|
# action is lazy and the created sub is named to a constant so we only
|
16
16
|
# have to do it once.
|
17
17
|
def fetch_duplicate_class(connection_class_name)
|
@@ -22,6 +22,11 @@ module ConnectionManager
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
# Modifies the dup class to use the connection class connection.
|
26
|
+
# We want to use the current class table name, but the connection
|
27
|
+
# class database as the prefix. We also want the superclass method to
|
28
|
+
# return the connection class as AR sometimes uses the the superclass
|
29
|
+
# connection
|
25
30
|
def build_dup_class(connection_class_name)
|
26
31
|
con_class = connection_class_name.constantize
|
27
32
|
db_name = con_class.database_name
|
@@ -34,44 +39,20 @@ module ConnectionManager
|
|
34
39
|
def model_name
|
35
40
|
#{self.name}.model_name
|
36
41
|
end
|
42
|
+
def connection_class
|
43
|
+
#{connection_class_name}
|
44
|
+
end
|
45
|
+
def connection
|
46
|
+
connection_class.connection
|
47
|
+
end
|
48
|
+
def superclass
|
49
|
+
connection_class
|
50
|
+
end
|
37
51
|
end
|
38
52
|
STR
|
39
53
|
|
40
|
-
extend_dup_class(dup_klass,connection_class_name)
|
41
54
|
self.const_set("#{connection_class_name}Dup", dup_klass)
|
42
55
|
end
|
43
|
-
|
44
|
-
# Extend the connection override module from the connetion to the supplied class
|
45
|
-
def extend_dup_class(dup_class,connection_class_name)
|
46
|
-
begin
|
47
|
-
mod = "#{connection_class_name}::ConnectionOverrideMod".constantize
|
48
|
-
dup_class.extend(mod)
|
49
|
-
rescue NameError
|
50
|
-
built = build_connection_override_module(connection_class_name).constantize
|
51
|
-
dup_class.extend(built)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# Added a module to the connection class. The module is extended on dup class
|
56
|
-
# to override the connection and superclass
|
57
|
-
def build_connection_override_module(connection_class_name)
|
58
|
-
connection_class_name.constantize.class_eval <<-STR
|
59
|
-
module ConnectionOverrideMod
|
60
|
-
def connection_class
|
61
|
-
#{connection_class_name}
|
62
|
-
end
|
63
|
-
|
64
|
-
def connection
|
65
|
-
connection_class.connection
|
66
|
-
end
|
67
|
-
|
68
|
-
def superclass
|
69
|
-
connection_class
|
70
|
-
end
|
71
|
-
end
|
72
|
-
STR
|
73
|
-
"#{connection_class_name}::ConnectionOverrideMod"
|
74
|
-
end
|
75
56
|
end
|
76
57
|
|
77
58
|
# Instance method for casting to a duplication class
|
data/spec/lib/using_spec.rb
CHANGED
@@ -8,18 +8,6 @@ end
|
|
8
8
|
|
9
9
|
describe ConnectionManager::Using do
|
10
10
|
|
11
|
-
it "should add module to provided class" do
|
12
|
-
Fruit.send(:build_connection_override_module,"CmFooSlaveConnection")
|
13
|
-
lambda { "CmFooSlaveConnection::ConnectionOverrideMod".constantize}.should_not raise_error(NameError)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should extend to module to the supplied class" do
|
17
|
-
Fruit.send(:build_connection_override_module,"CmFooSlaveConnection")
|
18
|
-
d = Fruit.dup
|
19
|
-
d.send(:extend_dup_class,d,"CmFooSlaveConnection")
|
20
|
-
d.connection.config.should_not eql(Fruit.connection.config)
|
21
|
-
end
|
22
|
-
|
23
11
|
it "should add sub class to current class with the name of the connection" do
|
24
12
|
Fruit.send(:fetch_duplicate_class,"CmFooSlaveConnection")
|
25
13
|
lambda { "Fruit::CmFooSlaveConnectionDup".constantize}.should_not raise_error(NameError)
|
@@ -33,7 +21,7 @@ describe ConnectionManager::Using do
|
|
33
21
|
Fruit.using("CmFooSlaveConnection").connection.config.should_not eql(Fruit.connection.config)
|
34
22
|
end
|
35
23
|
|
36
|
-
it "should create the same sql if called from model or from relation" #do
|
24
|
+
it "should create the exact same sql if called from model or from relation" #do
|
37
25
|
# Fruit.where(:name => "malarky").using("CmFooSlaveConnection").to_sql.should eql(
|
38
26
|
# Fruit.using("CmFooSlaveConnection").where(:name => "malarky").to_sql)
|
39
27
|
# end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: connection_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
181
|
version: '0'
|
182
182
|
requirements: []
|
183
183
|
rubyforge_project: connection_manager
|
184
|
-
rubygems_version: 1.8.
|
184
|
+
rubygems_version: 1.8.25
|
185
185
|
signing_key:
|
186
186
|
specification_version: 3
|
187
187
|
summary: Simplifies connecting to Muliple and Replication databases with rails and
|