active_record_slave 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: df85e9044445ca044fcbe373312c3634f5c4d1f5
4
- data.tar.gz: 1d31ecdaa29211fa71f852a95ab183498a26a0fb
2
+ SHA256:
3
+ metadata.gz: 6235db3e4c19fc1b58a00eaacde74d778e7cb8a8ef3672fe2ca63ca20f10702c
4
+ data.tar.gz: cad224213432afad1c87358923595f992ce61d63c1d467ce7dbc84b6af5d37cc
5
5
  SHA512:
6
- metadata.gz: fe6e8c3dfa5e7638879c954e016b6970e4432865b0a9e60e8f0d769b2201b62c571e5bda9e222770c7839f1d5884b689b0de6980b13c95290096a07572d6f94b
7
- data.tar.gz: 38475bf316504c120a18cd7aa0e355e431dd99842370e79c1a7cb37ceaf67e48c26694e4bfc2d8c9a1339cb50a3d41313cd27c86066f16a3149969b4f02977ec
6
+ metadata.gz: 7e26f4116785cc6ef8777d4850d44b2034e52448c20b13c6f1a920e47d41a6a9ceded5a47d8aaed5bb12fc9ee327013f0fa40214b720bc51e0fe88c666b153a2
7
+ data.tar.gz: cef0b388839d44b90e4c34c1c0a9fa9978e2155621042742ab58c6fb7b5ccd40b811d746e6b3509934accd0d5654006e1e96bf0637417d106baa70947b3825cf
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
- # active_record_slave
2
- [![Gem Version](https://img.shields.io/gem/v/active_record_slave.svg)](https://rubygems.org/gems/active_record_slave) [![Build Status](https://travis-ci.org/rocketjob/active_record_slave.svg?branch=master)](https://travis-ci.org/rocketjob/active_record_slave) [![Downloads](https://img.shields.io/gem/dt/active_record_slave.svg)](https://rubygems.org/gems/active_record_slave) ![](https://img.shields.io/badge/status-Production%20Ready-blue.svg) [![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-Support-brightgreen.svg)](https://gitter.im/rocketjob/support)
1
+ # Active Record Slave
2
+ [![Gem Version](https://img.shields.io/gem/v/active_record_slave.svg)](https://rubygems.org/gems/active_record_slave) [![Build Status](https://travis-ci.org/rocketjob/active_record_slave.svg?branch=master)](https://travis-ci.org/rocketjob/active_record_slave) [![Downloads](https://img.shields.io/gem/dt/active_record_slave.svg)](https://rubygems.org/gems/active_record_slave) [![License](https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg)](http://opensource.org/licenses/Apache-2.0) ![](https://img.shields.io/badge/status-Production%20Ready-blue.svg) [![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-Support-brightgreen.svg)](https://gitter.im/rocketjob/support)
3
3
 
4
4
  Redirect ActiveRecord (Rails) reads to slave databases while ensuring all writes go to the master database.
5
5
 
@@ -7,8 +7,9 @@ Redirect ActiveRecord (Rails) reads to slave databases while ensuring all writes
7
7
 
8
8
  ## Introduction
9
9
 
10
- Redirect database reads to slave instances while ensuring that all writes go to the master database.
11
- Any reads that are performed within a database transaction are by default directed to the master
10
+ active_record_slave redirects all database reads to slave instances while ensuring
11
+ that all writes go to the master database. active_record_slave ensures that
12
+ any reads that are performed within a database transaction are by default directed to the master
12
13
  database to ensure data consistency.
13
14
 
14
15
  ## Status
@@ -17,7 +18,7 @@ Production Ready. Actively used in large production environments.
17
18
 
18
19
  ## Features
19
20
 
20
- * Redirect reads to a single slave database.
21
+ * Redirecting reads to a single slave database.
21
22
  * Works with any database driver that works with ActiveRecord.
22
23
  * Supports all Rails 3, 4, or 5 read apis.
23
24
  * Including dynamic finders, AREL, and ActiveRecord::Base.select.
@@ -254,6 +255,8 @@ production:
254
255
 
255
256
  ## Dependencies
256
257
 
258
+ * Tested on Rails 3 and Rails 4
259
+
257
260
  See [.travis.yml](https://github.com/reidmorrison/active_record_slave/blob/master/.travis.yml) for the list of tested Ruby platforms
258
261
 
259
262
  ## Possible Future Enhancements
@@ -45,11 +45,34 @@ module ActiveRecordSlave
45
45
  end
46
46
  end
47
47
 
48
+ #
49
+ # The default behavior can also set to read/write operations against master
50
+ # Create an initializer file config/initializer/active_record_slave.rb
51
+ # and set ActiveRecordSlave.read_from_master! to force read from master.
52
+ # Then use this method and supply block to read from the slave database
53
+ # Only applies to calls made within the current thread
54
+ def self.read_from_slave
55
+ return yield if read_from_slave?
56
+ begin
57
+ # Set nil indicator in thread local storage so that it is visible
58
+ # during the select call
59
+ read_from_slave!
60
+ yield
61
+ ensure
62
+ read_from_master!
63
+ end
64
+ end
65
+
48
66
  # Whether this thread is currently forcing all reads to go against the master database
49
67
  def self.read_from_master?
50
68
  thread_variable_get(:active_record_slave) == :master
51
69
  end
52
70
 
71
+ # Whether this thread is currently forcing all reads to go against the slave database
72
+ def self.read_from_slave?
73
+ thread_variable_get(:active_record_slave) == nil
74
+ end
75
+
53
76
  # Force all subsequent reads on this thread and any fibers called by this thread to go the master
54
77
  def self.read_from_master!
55
78
  thread_variable_set(:active_record_slave, :master)
@@ -1,3 +1,3 @@
1
1
  module ActiveRecordSlave #:nodoc
2
- VERSION = '1.3.0'
2
+ VERSION = '1.4.0'
3
3
  end
Binary file
@@ -2,9 +2,5 @@ ENV['RAILS_ENV'] = 'test'
2
2
 
3
3
  require 'active_record'
4
4
  require 'minitest/autorun'
5
- require 'minitest/reporters'
6
- require 'minitest/stub_any_instance'
7
5
  require 'active_record_slave'
8
6
  require 'awesome_print'
9
-
10
- Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_slave
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-12 00:00:00.000000000 Z
11
+ date: 2018-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -65,14 +65,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  version: '0'
66
66
  requirements: []
67
67
  rubyforge_project:
68
- rubygems_version: 2.6.11
68
+ rubygems_version: 2.7.3
69
69
  signing_key:
70
70
  specification_version: 4
71
71
  summary: Redirect ActiveRecord (Rails) reads to slave databases while ensuring all
72
72
  writes go to the master database.
73
73
  test_files:
74
+ - test/test_slave.sqlite3
74
75
  - test/active_record_slave_test.rb
75
- - test/database.yml
76
76
  - test/test.sqlite3
77
+ - test/database.yml
77
78
  - test/test_helper.rb
78
- - test/test_slave.sqlite3