rails-sharding 1.1.3 → 1.2.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
2
  SHA256:
3
- metadata.gz: 96b5ada6418c66eb271dff04d02ffc221e4790016b0d37ac7cd46303df8c6753
4
- data.tar.gz: 8937dffd4ac3233f435447ac0c2ef1aba837cd6f0ea86bf8e22a49cbdcb1161e
3
+ metadata.gz: '06952a8d4b285bc681adc59a8653eddc1222432d5b62cd4d97462fab6ff63770'
4
+ data.tar.gz: a3d9cf13268beaeda50dbb44961afce736ba5df0793ef0aafe20ba37fe2ab155
5
5
  SHA512:
6
- metadata.gz: 23c77ba2a1b8d967054a8885c33e78fdbe39dfe89eeaff38ee0b2e7e5003e4e286e8b965ba560aae7d01dbbac3ba008149e732354f436206525bd724f561684f
7
- data.tar.gz: 49ceb4e48cd139db5d197eddcf7dbc4511f8a6e2ab82a26ca3cc6f2065e7ee82d56d45389148f7268ee3d05b6ad7fb264dca81074858d4c1a0f36d4b444158e7
6
+ metadata.gz: 569ea9f4ae0fe748b696fa10aa1af66b2dca6b82231eeb523187f424ecbeec20d21783e8f200076672bf0389f46966bb55f6be3be4ae270071e532bb91f7e2a7
7
+ data.tar.gz: bd63818ba25d2d836c116aca83f1b2267a6288f76bce34d0ff93cdcae055e13bf7d20e51eee1d0c87005df6e187cf00da5a6d0bdefa1a761abfbfa9bede1f0e9
data/README.md CHANGED
@@ -8,13 +8,13 @@
8
8
 
9
9
  Simple and robust sharding gem for Rails, including Migrations and ActiveRecord extensions
10
10
 
11
- This gems allows you to easily create extra databases to your rails application, and freely allocate ActiveRecord instances to any of the databases.
11
+ This gems allows you to easily create extra databases to your rails application, and freely allocate ActiveRecord instances to any of the databases.
12
12
 
13
13
  Accessing shards is as simple as:
14
14
  ```ruby
15
15
  # creating a user to a specific shard
16
16
  new_user = User.using_shard(:shard_group1, :shard1).create(username: 'x')
17
-
17
+
18
18
  # retrieving a user from a specific shard
19
19
  loaded_user = User.using_shard(:shard_group1, :shard1).where(username: 'x').first
20
20
  ```
@@ -23,7 +23,7 @@ You can also use the block syntax:
23
23
  ```ruby
24
24
  Rails::Sharding.using_shard(:shard_group1, :shard1) do
25
25
  # All statements inside this block will go to the selected shard
26
-
26
+
27
27
  # Do some queries
28
28
  new_user = User.create(username: 'x')
29
29
  loaded_user = User.where(username: 'x').first
@@ -35,7 +35,7 @@ You can also pick and choose which models will be shardable. Non shardable model
35
35
 
36
36
  ## Compatibility
37
37
  Gem version 1.x.x:
38
- * Rails 5.0 and 5.1
38
+ * Rails 5.0, 5.1 and 5.2
39
39
  * Databases: MySQL, MariaDB, Postgres
40
40
 
41
41
  Gem version 0.x.x:
@@ -85,7 +85,7 @@ development:
85
85
  ...
86
86
  ```
87
87
 
88
- Rename it to `config/shards.yml` and change it to your database configuration. This example file defines a single shard group (named `shard_group1`) containing two shards (`shard1` and `shard2`).
88
+ Rename it to `config/shards.yml` and change it to your database configuration. This example file defines a single shard group (named `shard_group1`) containing two shards (`shard1` and `shard2`).
89
89
 
90
90
  **A shard group is a set of shards that should have the same schema.**
91
91
 
@@ -95,7 +95,7 @@ rake shards:create
95
95
  ```
96
96
 
97
97
  ## Migrating Shards
98
- Go to the directory `db/shards_migrations/shard_group1` and add all migrations that you want to run on the shards of `shard_group1`. By design, all shards in a same group should always have the same schema.
98
+ Go to the directory `db/shards_migrations/shard_group1` and add all migrations that you want to run on the shards of `shard_group1`. By design, all shards in a same group should always have the same schema.
99
99
 
100
100
 
101
101
  As of now, there is no generator for migrations. You can use the regular rails generator and move the migrations to the `shards_migration` folder.
@@ -195,11 +195,11 @@ Want to know more? How to integrate with RSpec, Capistrano, etc? Take a look at
195
195
 
196
196
  After checking out the repo:
197
197
 
198
- 1. Run `bundle` to install gems
198
+ 1. Run `bundle` to install gems
199
199
 
200
200
  1. Create your `spec/fixtures/shards.yml` based on the example on this same folder (you need MySQL and Postgres)
201
201
 
202
- 1. Run `rake db:test:prepare` to create the test shards.
202
+ 1. Run `rake db:test:prepare` to create the test shards.
203
203
 
204
204
  1. Run `rspec` to run the tests.
205
205
 
@@ -78,7 +78,7 @@ module Rails::Sharding
78
78
  alias_method :eql?, :==
79
79
  end
80
80
 
81
- # Fixes case when behavior when ScopeProxy is passed to case
81
+ # Fixes case-when behavior when ScopeProxy is passed to case
82
82
  # (otherwise classes don't match)
83
83
  module CaseFixer
84
84
  def ===(other)
@@ -52,7 +52,7 @@ module Rails::Sharding
52
52
  end
53
53
  end
54
54
 
55
- # @overrides ActiveRecord::ConnectionHandling#sharded_connected?
55
+ # @overrides ActiveRecord::ConnectionHandling#connected?
56
56
  def sharded_connected?
57
57
  if ShardThreadRegistry.connecting_to_master?
58
58
  return original_connected?
@@ -107,6 +107,15 @@ module Rails::Sharding
107
107
  return ConnectionHandler.connection_handler.clear_all_connections!
108
108
  end
109
109
  end
110
+
111
+ # @overrides ActiveRecord::ConnectionHandling#flush_idle_connections!
112
+ def sharded_flush_idle_connections!
113
+ if ShardThreadRegistry.connecting_to_master?
114
+ return original_flush_idle_connections!
115
+ else
116
+ return ConnectionHandler.connection_handler.flush_idle_connections!
117
+ end
118
+ end
110
119
  end
111
120
 
112
121
  end
@@ -1,5 +1,5 @@
1
1
  module Rails
2
2
  module Sharding
3
- VERSION = "1.1.3"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_runtime_dependency 'rails', '~> 5.1.0'
26
+ spec.add_runtime_dependency 'rails', '~> 5.2.0'
27
27
 
28
28
  spec.add_development_dependency "bundler", "~> 1.17"
29
29
  spec.add_development_dependency "rake", "~> 13.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-sharding
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrique Gubert
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-10 00:00:00.000000000 Z
11
+ date: 2020-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.1.0
19
+ version: 5.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.1.0
26
+ version: 5.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement