database_slave 0.1.3 → 0.1.4
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.
- checksums.yaml +8 -8
- data/CHANGELOG +7 -0
- data/lib/database_slave/connection_handler.rb +2 -2
- data/lib/database_slave/relation.rb +18 -2
- data/lib/database_slave/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Yzc1MGJlZjI3YWQ5M2VmNzEwNGNjZjFiNWVkMjRhMjQ1NjE3NjI3Nw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ODE2NzI0MTNkYTdiMTQxYThmM2M0MjRjMDg4Y2EwOTg1ZjFhNWJkMA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDVhNjBiOGNjMzRmZTYyY2VjYjM3NTU5NmE5N2EyMDQxOGYxZGUxZTAwM2Nl
|
10
|
+
ZjJjMjIzN2Y2OGQyZmFlOGM0NWQ0ZWE3YWM5ZWRhOTM5Njk2MzZhOGY4ZDUw
|
11
|
+
ZTU5NzQ1MzM3N2FiOGFkZDQ5NThjZTBkNDNkM2ZmZDVhZWM5YWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmRiYmZmYThmN2RjODdiZWE2OTc4YWJhNGI3MGMwNWJiMjU0NDYxNjY4OWE4
|
14
|
+
MzAyM2VmOGZhMjhlYmQxZTMxMTE5NWVhNTU5YjhlYzk1ZDI0NjJmZmI0ZTUy
|
15
|
+
NmY3MTk5YmNlZjhlZjcxYjQzZjM3MmU0ZjI3ZjYwNjM4NDA1ZTY=
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
0.1.4 - 2015-11-03
|
2
|
+
* support Kaminari#paginate
|
3
|
+
* support ActiveRecord::Relation#except
|
4
|
+
* support execute pure SQL:
|
5
|
+
ActiveRecord::Base.using(:slave_name) do
|
6
|
+
ActiveRecord::Base.connection.execute()
|
7
|
+
end
|
1
8
|
0.1.3 - 2015-04-01
|
2
9
|
* bug fixed: raised error if Settings.using_slave is nil/false and using block
|
3
10
|
0.1.2 - 2015-03-31
|
@@ -14,7 +14,7 @@ module DatabaseSlave
|
|
14
14
|
# 查看源码可知原方法传入的是self, 即当前调用类; 类自带了name方法.
|
15
15
|
#
|
16
16
|
# 同理, 这里我们也应该传入一个类名, 但self不是所期望的, 于是这里使用了
|
17
|
-
#
|
17
|
+
#
|
18
18
|
# self.const_set(slave_name.to_s.strip.camelize, Class.new)
|
19
19
|
#
|
20
20
|
# 的方式动态地创建了一个类.
|
@@ -42,7 +42,7 @@ module DatabaseSlave
|
|
42
42
|
end
|
43
43
|
|
44
44
|
# === Description
|
45
|
-
#
|
45
|
+
#
|
46
46
|
# 当真正要执行一条SQL语句的时候, Rails会调用
|
47
47
|
# ActiveRecord::Base.connection
|
48
48
|
#
|
@@ -24,8 +24,14 @@ module DatabaseSlave
|
|
24
24
|
def using_slave(slave_name)
|
25
25
|
if Settings.using_slave
|
26
26
|
if block_given?
|
27
|
-
|
28
|
-
ActiveRecord::
|
27
|
+
db_name = "DatabaseSlave::ConnectionHandler::#{slave_name.to_s.strip.camelize}"
|
28
|
+
unless ActiveRecord::Base.slave_connections.include? db_name
|
29
|
+
raise DatabaseSlave::SlaveConnectionNotExists,
|
30
|
+
"#{slave_name} is not exists."
|
31
|
+
end
|
32
|
+
|
33
|
+
ActiveRecord::Relation.class_variable_set(:@@slave_block_given, db_name)
|
34
|
+
DatabaseSlave::RuntimeRegistry.current_slave_name ||= db_name
|
29
35
|
begin
|
30
36
|
yield
|
31
37
|
ensure
|
@@ -154,6 +160,16 @@ module DatabaseSlave
|
|
154
160
|
super
|
155
161
|
end
|
156
162
|
end if defined?(Rails)
|
163
|
+
|
164
|
+
# junk hack:
|
165
|
+
# except会重新生成一个ActiveRecord::Relation对象, 所以except之前的using_slave就会失效,
|
166
|
+
# 这里hack一下添加进来.
|
167
|
+
# (主要是为了解决kaminari分页时total_count仍然查询的是主库的问题.)
|
168
|
+
def except(*skips)
|
169
|
+
slave_name_snake = slave_name.to_s.underscore.split('/').last
|
170
|
+
return super if slave_name_snake.blank?
|
171
|
+
using_slave? ? super.using(slave_name_snake.to_sym) : super
|
172
|
+
end
|
157
173
|
end
|
158
174
|
|
159
175
|
def self.prepended(klass)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_slave
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hayden Wei
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Provide master and slave databases support for Rails applications.
|
14
14
|
email: haidongrun@gmail.com
|