activerecord-shard_for 0.5.0 → 0.6.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
  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 => "../"