activerecord-shard_for 0.5.0 → 0.6.0

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7598d89f3c2df373c8936c3df0e9e77e6b1f96f6
4
- data.tar.gz: f9b9a4405849837c138184f68ad12e8374340c8f
3
+ metadata.gz: 13ad1572bb8ed11c7e554775318e57ed90d790c2
4
+ data.tar.gz: 3fbd2d039d58050bce3b5c99d15e5d9fa3d4a9c4
5
5
  SHA512:
6
- metadata.gz: 1f95be02a5787e073cb98f04059633cfb629c00e6c9854e22e0a590408162e0abd1299f5039f0f3710e1b79c7963f3d7c799094fe1e052668bbb848394df9089
7
- data.tar.gz: 5f56d475a656397f86282a5930bbc2b0ab9c5aa2609bf453ca28ad92432251421331683041be42381ef9d57e5b438d23adc7f3a18f95807d44149882bb5b293d
6
+ metadata.gz: d63e1c46d46ea2aeac501ef28b1a072bd4c321150f5394fc83591204cd72045e33a4bb2e8de0e5c5dee90ab484676fd108cac0431e16229412f89c5db3b2616e
7
+ data.tar.gz: 28909b54eb841e9fa7eb5fbcb4d0818c06dbfed05a1931cb905ecc4e8b96e30ac01e9a04d638975699d17c084c9bb27b90c7387e1f3127ca694f4c16dea0daa3
@@ -5,6 +5,7 @@ AllCops:
5
5
  - Guardfile
6
6
  - lib/activerecord/tasks/activerecord_shard_for.rake
7
7
  - gemfiles/**/*
8
+ - vendor/bundle/**/*
8
9
  DisplayCopNames: true
9
10
 
10
11
  Style/FrozenStringLiteralComment:
@@ -17,20 +17,11 @@ script:
17
17
  - bundle exec rspec
18
18
  - CODECLIMATE_REPO_TOKEN=dfc951e2d70b56ee62ffe989eb6286a6f21bf57209ccbd111bd336c372d8d06e bundle exec codeclimate-test-reporter
19
19
  gemfile:
20
- - gemfiles/ar_4.1.8.gemfile
21
- - gemfiles/ar_4.2.gemfile
22
20
  - gemfiles/ar_5.0.gemfile
23
21
  - gemfiles/rails_edge.gemfile
24
22
  matrix:
25
23
  allow_failures:
26
24
  - gemfile: gemfiles/rails_edge.gemfile
27
- exclude:
28
- - rvm: 2.1.9
29
- gemfile: gemfiles/rails_edge.gemfile
30
- - rvm: 2.1.9
31
- gemfile: gemfiles/ar_5.0.gemfile
32
- - rvm: 2.4.0
33
- gemfile: gemfiles/ar_4.1.8.gemfile
34
25
  notifications:
35
26
  slack:
36
27
  secure: S1W/Lw+dH3wb8FfkMIWPZmr6M4Q6S2WMkSlanpKva1HM7K5QL7hXdmUl2yBUxJE26BHSsb1ScozMEzadyda2+i/W34UvZ7LXgKeHkUKEdjy/AmsSJPK1ZjMfgnv10tVgbEIusNb4bF/sSuChdZKK3ILwOlqIPDlQNdMwF1xRA2xt5J7tb26UgyIzoCI4P3bJYMULWsEkk+UwHiJH0YO9ulkTZI/j0N+hLXQLJTZPjmKtMk/tE0NbBmFVL4md89hUcR5gKTGGrNzEMJ58K+zqeDG/DubkcIbA5ZuqKv+oE5m0pDODZExxnC+oeENTvq/VfYwOfD0pTDrBNYjj+Bm3YiyGDzQAgov9XPDG8g/fKEs/LNAT79UZXkZlFO99Yn/vrYH9o5DKpOE9smENUXylb55MgLTUiYe17CTp7pB3trbJl3wwIbLjSmTjAdSUNgPv8qDP4uk3K4U32mknXCDDkU9EI7f6F731ocdoxsGarEBcPcgjs73Y84iwDteQp847Gigtgo4Y4TCWH657uzLolR2O8NSw+vWT0VNI9qtR5PZD7iVYtSp1qHtPAKowCztodewY2Nu+Ds9Z95udf4GPUkFg/SNEJPTPrQFLiiJZ8UYP8NJEuA+IP1tc2zG3zU/ADrjenRC1ZiupQG7OMH82y11408U6PcHFSlF+7NuDkac=
data/Appraisals CHANGED
@@ -1,21 +1,5 @@
1
1
  # vim: set ft=ruby
2
2
 
3
- appraise 'ar-4.1.0' do
4
- gem 'activerecord', '4.1.0'
5
- end
6
-
7
- appraise 'ar-4.1.7' do
8
- gem 'activerecord', '4.1.7'
9
- end
10
-
11
- appraise 'ar-4.1.8' do
12
- gem 'activerecord', '4.1.8'
13
- end
14
-
15
- appraise 'ar-4.2' do
16
- gem 'activerecord', '~> 4.2'
17
- end
18
-
19
3
  appraise 'ar-5.0' do
20
4
  gem 'activerecord', '~> 5.0.0'
21
5
  end
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG for activerecord-shard_for
2
2
 
3
+ ## 0.6.0
4
+
5
+ - Support same connection to connect for same shard. [#15](https://github.com/yuemori/activerecord-shard_for/pull/15)
6
+ - Drop rails4 support
7
+
3
8
  ## 0.5.0
4
9
 
5
10
  - Support Single Table Inheritance. [#14](https://github.com/yuemori/activerecord-shard_for/pull/14)
@@ -20,12 +20,15 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'activerecord', '>= 4.1.0'
24
- spec.add_dependency 'activesupport', '>= 4.1.0'
23
+ spec.add_dependency 'activerecord', '>= 5.0.0'
24
+ spec.add_dependency 'activesupport', '>= 5.0.0'
25
25
  spec.add_dependency 'expeditor', '>= 0.1.0'
26
- spec.add_development_dependency 'bundler', '~> 1.11'
27
- spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'bundler', '>= 1.14'
27
+ spec.add_development_dependency 'rake'
28
28
  spec.add_development_dependency 'rspec', '~> 3.0'
29
+ spec.add_development_dependency 'guard'
30
+ spec.add_development_dependency 'guard-rubocop'
31
+ spec.add_development_dependency 'guard-rspec'
29
32
  spec.add_development_dependency 'pry-byebug'
30
33
  spec.add_development_dependency 'rubocop'
31
34
  spec.add_development_dependency 'appraisal'
@@ -10,7 +10,7 @@ require 'activerecord/shard_for/connection_router'
10
10
  require 'activerecord/shard_for/hash_modulo_router'
11
11
  require 'activerecord/shard_for/distkey_router'
12
12
  require 'activerecord/shard_for/database_tasks'
13
- require 'activerecord/shard_for/shard_repogitory'
13
+ require 'activerecord/shard_for/shard_repository'
14
14
  require 'activerecord/shard_for/all_shards_in_parallel'
15
15
  require 'activerecord/shard_for/replication_mapping'
16
16
  require 'activerecord/shard_for/railtie' if defined?(Rails)
@@ -29,7 +29,7 @@ module ActiveRecord
29
29
 
30
30
  # @param [Symbol] connection_name
31
31
  # @return [String]
32
- def generate_class_name(connection_name)
32
+ def generate_shard_name(connection_name)
33
33
  "ShardFor#{connection_name.to_s.tr('-', '_').classify}"
34
34
  end
35
35
  end
@@ -21,7 +21,7 @@ module ActiveRecord
21
21
  cluster_config = ActiveRecord::ShardFor.config.fetch_cluster_config(name)
22
22
  connection_router_class = ActiveRecord::ShardFor.config.fetch_connection_router(router_name)
23
23
  self.connection_router = connection_router_class.new(cluster_config)
24
- self.shard_repository = ActiveRecord::ShardFor::ShardRepogitory.new(cluster_config, self)
24
+ self.shard_repository = ActiveRecord::ShardFor::ShardRepository.new(cluster_config, self)
25
25
  self.abstract_class = true
26
26
  end
27
27
 
@@ -1,6 +1,6 @@
1
1
  module ActiveRecord
2
2
  module ShardFor
3
- class ShardRepogitory < AbstractShardRepository
3
+ class ShardRepository < AbstractShardRepository
4
4
  attr_reader :base_class
5
5
 
6
6
  # @param [ClusterConfig] cluster_config
@@ -9,22 +9,41 @@ module ActiveRecord
9
9
  @base_class = base_class
10
10
 
11
11
  @shards = cluster_config.connection_registry.each_with_object({}) do |(key, connection_name), hash|
12
+ establish_connection(connection_name)
12
13
  model = generate_model_for_shard(connection_name, key)
13
- base_class.const_set(:"#{generate_class_name(connection_name)}", model)
14
+ base_class.const_set(:"#{generate_shard_name(connection_name)}", model)
14
15
  hash[connection_name] = model
15
16
  end
16
17
  end
17
18
 
18
19
  private
19
20
 
21
+ # Establish connection for shard.
22
+ # @param [Symbol] connection_name
23
+ def establish_connection(connection_name)
24
+ shard_name = generate_shard_name(connection_name)
25
+
26
+ model = Class.new(base_class) do
27
+ self.table_name = base_class.table_name
28
+
29
+ module_eval <<-RUBY, __FILE__, __LINE__ + 1
30
+ def self.name
31
+ "#{shard_name}"
32
+ end
33
+ RUBY
34
+ end
35
+
36
+ model.establish_connection connection_name
37
+ end
38
+
20
39
  # @param [Symbol] connection_name
21
40
  # @param [Range] slot_range
22
41
  # @return [Class] A sub class of given AR model.
23
42
  # A sub class has connection setting for specific shard.
24
43
  def generate_model_for_shard(connection_name, key)
25
- class_name = generate_class_name(connection_name)
44
+ shard_name = generate_shard_name(connection_name)
26
45
 
27
- model = Class.new(base_class) do
46
+ Class.new(base_class) do
28
47
  self.table_name = base_class.table_name
29
48
  class << self
30
49
  attr_reader :assigned_key
@@ -33,13 +52,11 @@ module ActiveRecord
33
52
 
34
53
  module_eval <<-RUBY, __FILE__, __LINE__ + 1
35
54
  def self.name
36
- "#{base_class.name}::#{class_name}"
55
+ "#{base_class.name}::#{shard_name}"
37
56
  end
57
+ self.connection_specification_name = "#{shard_name}"
38
58
  RUBY
39
59
  end
40
-
41
- model.class_eval { establish_connection(connection_name) }
42
- model
43
60
  end
44
61
  end
45
62
  end
@@ -10,7 +10,7 @@ module ActiveRecord
10
10
 
11
11
  @shards = base_shards.each_with_object({}) do |(connection_name, base_model), hash|
12
12
  model = generate_model_from_shard(connection_name, base_model)
13
- inherited_class.const_set(:"#{generate_class_name(connection_name)}", model)
13
+ inherited_class.const_set(:"#{generate_shard_name(connection_name)}", model)
14
14
  hash[connection_name] = model
15
15
  end
16
16
  end
@@ -21,7 +21,7 @@ module ActiveRecord
21
21
  # @param [Class] A class of shard model.
22
22
  # @return [Class] A sub class of given model.
23
23
  def generate_model_from_shard(connection_name, base_model)
24
- class_name = generate_class_name(connection_name)
24
+ shard_name = generate_shard_name(connection_name)
25
25
  module_name = inherited_class.name
26
26
 
27
27
  model = Class.new(base_model) do
@@ -29,7 +29,7 @@ module ActiveRecord
29
29
 
30
30
  module_eval <<-RUBY, __FILE__, __LINE__ + 1
31
31
  def self.name
32
- "#{module_name}::#{class_name}"
32
+ "#{module_name}::#{shard_name}"
33
33
  end
34
34
  RUBY
35
35
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module ShardFor
3
- VERSION = '0.5.0'.freeze
3
+ VERSION = '0.6.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-shard_for
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yuemori
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-30 00:00:00.000000000 Z
11
+ date: 2017-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.1.0
19
+ version: 5.0.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: 4.1.0
26
+ version: 5.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.1.0
33
+ version: 5.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.1.0
40
+ version: 5.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: expeditor
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -56,30 +56,30 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.11'
61
+ version: '1.14'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.11'
68
+ version: '1.14'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '10.0'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,48 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: pry-byebug
99
141
  requirement: !ruby/object:Gem::Requirement
@@ -200,10 +242,6 @@ files:
200
242
  - bin/console
201
243
  - bin/setup
202
244
  - gemfiles/.bundle/config
203
- - gemfiles/ar_4.1.0.gemfile
204
- - gemfiles/ar_4.1.7.gemfile
205
- - gemfiles/ar_4.1.8.gemfile
206
- - gemfiles/ar_4.2.gemfile
207
245
  - gemfiles/ar_5.0.gemfile
208
246
  - gemfiles/rails_edge.gemfile
209
247
  - lib/activerecord/shard_for.rb
@@ -220,7 +258,7 @@ files:
220
258
  - lib/activerecord/shard_for/patch.rb
221
259
  - lib/activerecord/shard_for/railtie.rb
222
260
  - lib/activerecord/shard_for/replication_mapping.rb
223
- - lib/activerecord/shard_for/shard_repogitory.rb
261
+ - lib/activerecord/shard_for/shard_repository.rb
224
262
  - lib/activerecord/shard_for/sti.rb
225
263
  - lib/activerecord/shard_for/sti_shard_repository.rb
226
264
  - lib/activerecord/shard_for/version.rb
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "4.1.0"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "4.1.7"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "4.1.8"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.2"
6
-
7
- gemspec :path => "../"