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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTczMzQxYWIxMjcxMjkxZmMxY2JjOTA2YWRlMDAwYWJkNTgwOWE2ZA==
4
+ Yzc1MGJlZjI3YWQ5M2VmNzEwNGNjZjFiNWVkMjRhMjQ1NjE3NjI3Nw==
5
5
  data.tar.gz: !binary |-
6
- ZjEwZGY2NGRkZjViY2E2MmU3YjVjM2QxMjE5ZjYzMzJhNTFlMTJhYw==
6
+ ODE2NzI0MTNkYTdiMTQxYThmM2M0MjRjMDg4Y2EwOTg1ZjFhNWJkMA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZGEzMjczMzJlYWE1MmFlNjY1MDdlMGJkNDc4NGZlZGMzZDc3NzQ4NWFiMjJm
10
- ZjBlODc3NjBiYTZmZTAwOThkZjc5YTYwNWVkZWNkYjM0ZWE5MjdlODM4NjY1
11
- MGE2MzMwOGQ5OWRlZTFlN2EzODJhOTMxYmEwNDVhY2NiMjk3Y2E=
9
+ NDVhNjBiOGNjMzRmZTYyY2VjYjM3NTU5NmE5N2EyMDQxOGYxZGUxZTAwM2Nl
10
+ ZjJjMjIzN2Y2OGQyZmFlOGM0NWQ0ZWE3YWM5ZWRhOTM5Njk2MzZhOGY4ZDUw
11
+ ZTU5NzQ1MzM3N2FiOGFkZDQ5NThjZTBkNDNkM2ZmZDVhZWM5YWE=
12
12
  data.tar.gz: !binary |-
13
- NGExMzQ4ZGY5MGU2YjRhZWYxNWEyMGI2MDM4MWU5MzEzYmM4M2Q1MGVmMTdk
14
- NjZkMjc3ZTdjYmY3OWMzZDAxYjUwMjViNTJiODc2ODM1NjAwOTA0YzA0MWY0
15
- ODJlNTVhOTUwZjZmZDAzMWQwMjcwOWUwOTQ4ODFlODRmN2RkN2U=
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
- name = "DatabaseSlave::ConnectionHandler::#{slave_name.to_s.strip.camelize}"
28
- ActiveRecord::Relation.class_variable_set(:@@slave_block_given, name)
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)
@@ -1,3 +1,3 @@
1
1
  module DatabaseSlave
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
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.3
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-04-02 00:00:00.000000000 Z
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