activerecord-shard_for 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +28 -0
  5. data/.travis.yml +4 -0
  6. data/Appraisals +26 -0
  7. data/CODE_OF_CONDUCT.md +49 -0
  8. data/Gemfile +5 -0
  9. data/Guardfile +21 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +296 -0
  12. data/Rakefile +10 -0
  13. data/activerecord-shard_for.gemspec +40 -0
  14. data/bin/console +15 -0
  15. data/bin/setup +8 -0
  16. data/gemfiles/.bundle/config +1 -0
  17. data/gemfiles/ar_4.1.0.gemfile +7 -0
  18. data/gemfiles/ar_4.1.0.gemfile.lock +186 -0
  19. data/gemfiles/ar_4.1.7.gemfile +7 -0
  20. data/gemfiles/ar_4.1.7.gemfile.lock +186 -0
  21. data/gemfiles/ar_4.1.8.gemfile +7 -0
  22. data/gemfiles/ar_4.1.8.gemfile.lock +186 -0
  23. data/gemfiles/ar_4.2.gemfile +7 -0
  24. data/gemfiles/ar_4.2.gemfile.lock +186 -0
  25. data/gemfiles/ar_5.0.gemfile +7 -0
  26. data/gemfiles/ar_5.0.gemfile.lock +182 -0
  27. data/gemfiles/rails_edge.gemfile +8 -0
  28. data/gemfiles/rails_edge.gemfile.lock +193 -0
  29. data/lib/activerecord/shard_for.rb +32 -0
  30. data/lib/activerecord/shard_for/all_shards_in_parallel.rb +43 -0
  31. data/lib/activerecord/shard_for/cluster_config.rb +32 -0
  32. data/lib/activerecord/shard_for/config.rb +45 -0
  33. data/lib/activerecord/shard_for/connection_router.rb +33 -0
  34. data/lib/activerecord/shard_for/database_tasks.rb +185 -0
  35. data/lib/activerecord/shard_for/errors.rb +14 -0
  36. data/lib/activerecord/shard_for/hash_modulo_router.rb +18 -0
  37. data/lib/activerecord/shard_for/model.rb +134 -0
  38. data/lib/activerecord/shard_for/railtie.rb +10 -0
  39. data/lib/activerecord/shard_for/replication_mapping.rb +37 -0
  40. data/lib/activerecord/shard_for/shard_repogitory.rb +69 -0
  41. data/lib/activerecord/shard_for/version.rb +5 -0
  42. data/lib/activerecord/tasks/activerecord_shard_for.rake +42 -0
  43. metadata +323 -0
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+ require 'rubocop/rake_task'
5
+ require 'appraisal'
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ RuboCop::RakeTask.new
9
+
10
+ task default: :spec
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'activerecord/shard_for/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'activerecord-shard_for'
9
+ spec.version = ActiveRecord::ShardFor::VERSION
10
+ spec.authors = ['yuemori']
11
+ spec.email = ['yuemori@aiming-inc.com']
12
+
13
+ spec.summary = 'Database sharding library for ActiveRecord'
14
+ spec.description = 'Database sharding library for ActiveRecord'
15
+ spec.homepage = 'https://github.com/yuemori/activerecord-shard_for'
16
+ spec.license = 'MIT'
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ spec.bindir = 'exe'
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ['lib']
22
+
23
+ spec.add_dependency 'activerecord', '>= 4.1.0'
24
+ spec.add_dependency 'activesupport', '>= 4.1.0'
25
+ spec.add_dependency 'expeditor', '>= 0.1.0'
26
+ spec.add_development_dependency 'bundler', '~> 1.11'
27
+ spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'rspec', '~> 3.0'
29
+ spec.add_development_dependency 'pry'
30
+ spec.add_development_dependency 'pry-doc'
31
+ spec.add_development_dependency 'pry-stack_explorer'
32
+ spec.add_development_dependency 'pry-inline'
33
+ spec.add_development_dependency 'pry-rescue'
34
+ spec.add_development_dependency 'rubocop'
35
+ spec.add_development_dependency 'guard-rubocop'
36
+ spec.add_development_dependency 'guard-rspec'
37
+ spec.add_development_dependency 'appraisal'
38
+ spec.add_development_dependency 'sqlite3'
39
+ spec.add_development_dependency 'rspec-parameterized'
40
+ end
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'activerecord/shard_for'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1 @@
1
+ --- {}
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "4.1.0"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,186 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ activerecord-shard_for (0.1.0)
5
+ activerecord (>= 4.1.0)
6
+ activesupport (>= 4.1.0)
7
+ expeditor (>= 0.1.0)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ abstract_type (0.0.7)
13
+ activemodel (4.1.0)
14
+ activesupport (= 4.1.0)
15
+ builder (~> 3.1)
16
+ activerecord (4.1.0)
17
+ activemodel (= 4.1.0)
18
+ activesupport (= 4.1.0)
19
+ arel (~> 5.0.0)
20
+ activesupport (4.1.0)
21
+ i18n (~> 0.6, >= 0.6.9)
22
+ json (~> 1.7, >= 1.7.7)
23
+ minitest (~> 5.1)
24
+ thread_safe (~> 0.1)
25
+ tzinfo (~> 1.1)
26
+ adamantium (0.2.0)
27
+ ice_nine (~> 0.11.0)
28
+ memoizable (~> 0.4.0)
29
+ appraisal (2.1.0)
30
+ bundler
31
+ rake
32
+ thor (>= 0.14.0)
33
+ arel (5.0.1.20140414130214)
34
+ ast (2.3.0)
35
+ binding_of_caller (0.7.2)
36
+ debug_inspector (>= 0.0.1)
37
+ builder (3.2.2)
38
+ coderay (1.1.1)
39
+ concord (0.1.5)
40
+ adamantium (~> 0.2.0)
41
+ equalizer (~> 0.0.9)
42
+ concurrent-ruby (1.0.2)
43
+ concurrent-ruby-ext (1.0.2)
44
+ concurrent-ruby (~> 1.0.2)
45
+ debug_inspector (0.0.2)
46
+ diff-lcs (1.2.5)
47
+ equalizer (0.0.11)
48
+ expeditor (0.4.0)
49
+ concurrent-ruby (~> 1.0.0)
50
+ concurrent-ruby-ext (~> 1.0.0)
51
+ retryable (> 1.0)
52
+ ffi (1.9.14)
53
+ formatador (0.2.5)
54
+ guard (2.14.0)
55
+ formatador (>= 0.2.4)
56
+ listen (>= 2.7, < 4.0)
57
+ lumberjack (~> 1.0)
58
+ nenv (~> 0.1)
59
+ notiffany (~> 0.0)
60
+ pry (>= 0.9.12)
61
+ shellany (~> 0.0)
62
+ thor (>= 0.18.1)
63
+ guard-compat (1.2.1)
64
+ guard-rspec (4.7.3)
65
+ guard (~> 2.1)
66
+ guard-compat (~> 1.1)
67
+ rspec (>= 2.99.0, < 4.0)
68
+ guard-rubocop (1.2.0)
69
+ guard (~> 2.0)
70
+ rubocop (~> 0.20)
71
+ i18n (0.7.0)
72
+ ice_nine (0.11.2)
73
+ interception (0.5)
74
+ json (1.8.3)
75
+ listen (3.1.5)
76
+ rb-fsevent (~> 0.9, >= 0.9.4)
77
+ rb-inotify (~> 0.9, >= 0.9.7)
78
+ ruby_dep (~> 1.2)
79
+ lumberjack (1.0.10)
80
+ memoizable (0.4.2)
81
+ thread_safe (~> 0.3, >= 0.3.1)
82
+ method_source (0.8.2)
83
+ minitest (5.9.0)
84
+ nenv (0.3.0)
85
+ notiffany (0.1.1)
86
+ nenv (~> 0.1)
87
+ shellany (~> 0.0)
88
+ parser (2.3.1.2)
89
+ ast (~> 2.2)
90
+ powerpack (0.1.1)
91
+ proc_to_ast (0.1.0)
92
+ coderay
93
+ parser
94
+ unparser
95
+ procto (0.0.3)
96
+ pry (0.10.4)
97
+ coderay (~> 1.1.0)
98
+ method_source (~> 0.8.1)
99
+ slop (~> 3.4)
100
+ pry-doc (0.9.0)
101
+ pry (~> 0.9)
102
+ yard (~> 0.8)
103
+ pry-inline (1.0.2)
104
+ pry (~> 0.10.0)
105
+ unicode (~> 0.4.4)
106
+ pry-rescue (1.4.4)
107
+ interception (>= 0.5)
108
+ pry
109
+ pry-stack_explorer (0.4.9.2)
110
+ binding_of_caller (>= 0.7)
111
+ pry (>= 0.9.11)
112
+ rainbow (2.1.0)
113
+ rake (10.5.0)
114
+ rb-fsevent (0.9.7)
115
+ rb-inotify (0.9.7)
116
+ ffi (>= 0.5.0)
117
+ retryable (2.0.4)
118
+ rspec (3.5.0)
119
+ rspec-core (~> 3.5.0)
120
+ rspec-expectations (~> 3.5.0)
121
+ rspec-mocks (~> 3.5.0)
122
+ rspec-core (3.5.2)
123
+ rspec-support (~> 3.5.0)
124
+ rspec-expectations (3.5.0)
125
+ diff-lcs (>= 1.2.0, < 2.0)
126
+ rspec-support (~> 3.5.0)
127
+ rspec-mocks (3.5.0)
128
+ diff-lcs (>= 1.2.0, < 2.0)
129
+ rspec-support (~> 3.5.0)
130
+ rspec-parameterized (0.3.0)
131
+ binding_of_caller
132
+ parser
133
+ proc_to_ast
134
+ rspec (>= 2.13, < 4)
135
+ unparser
136
+ rspec-support (3.5.0)
137
+ rubocop (0.42.0)
138
+ parser (>= 2.3.1.1, < 3.0)
139
+ powerpack (~> 0.1)
140
+ rainbow (>= 1.99.1, < 3.0)
141
+ ruby-progressbar (~> 1.7)
142
+ unicode-display_width (~> 1.0, >= 1.0.1)
143
+ ruby-progressbar (1.8.1)
144
+ ruby_dep (1.3.1)
145
+ shellany (0.0.1)
146
+ slop (3.6.0)
147
+ sqlite3 (1.3.11)
148
+ thor (0.19.1)
149
+ thread_safe (0.3.5)
150
+ tzinfo (1.2.2)
151
+ thread_safe (~> 0.1)
152
+ unicode (0.4.4.2)
153
+ unicode-display_width (1.1.0)
154
+ unparser (0.2.5)
155
+ abstract_type (~> 0.0.7)
156
+ adamantium (~> 0.2.0)
157
+ concord (~> 0.1.5)
158
+ diff-lcs (~> 1.2.5)
159
+ equalizer (~> 0.0.9)
160
+ parser (~> 2.3.0)
161
+ procto (~> 0.0.2)
162
+ yard (0.9.5)
163
+
164
+ PLATFORMS
165
+ ruby
166
+
167
+ DEPENDENCIES
168
+ activerecord (= 4.1.0)
169
+ activerecord-shard_for!
170
+ appraisal
171
+ bundler (~> 1.11)
172
+ guard-rspec
173
+ guard-rubocop
174
+ pry
175
+ pry-doc
176
+ pry-inline
177
+ pry-rescue
178
+ pry-stack_explorer
179
+ rake (~> 10.0)
180
+ rspec (~> 3.0)
181
+ rspec-parameterized
182
+ rubocop
183
+ sqlite3
184
+
185
+ BUNDLED WITH
186
+ 1.12.5
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "4.1.7"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,186 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ activerecord-shard_for (0.1.0)
5
+ activerecord (>= 4.1.0)
6
+ activesupport (>= 4.1.0)
7
+ expeditor (>= 0.1.0)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ abstract_type (0.0.7)
13
+ activemodel (4.1.7)
14
+ activesupport (= 4.1.7)
15
+ builder (~> 3.1)
16
+ activerecord (4.1.7)
17
+ activemodel (= 4.1.7)
18
+ activesupport (= 4.1.7)
19
+ arel (~> 5.0.0)
20
+ activesupport (4.1.7)
21
+ i18n (~> 0.6, >= 0.6.9)
22
+ json (~> 1.7, >= 1.7.7)
23
+ minitest (~> 5.1)
24
+ thread_safe (~> 0.1)
25
+ tzinfo (~> 1.1)
26
+ adamantium (0.2.0)
27
+ ice_nine (~> 0.11.0)
28
+ memoizable (~> 0.4.0)
29
+ appraisal (2.1.0)
30
+ bundler
31
+ rake
32
+ thor (>= 0.14.0)
33
+ arel (5.0.1.20140414130214)
34
+ ast (2.3.0)
35
+ binding_of_caller (0.7.2)
36
+ debug_inspector (>= 0.0.1)
37
+ builder (3.2.2)
38
+ coderay (1.1.1)
39
+ concord (0.1.5)
40
+ adamantium (~> 0.2.0)
41
+ equalizer (~> 0.0.9)
42
+ concurrent-ruby (1.0.2)
43
+ concurrent-ruby-ext (1.0.2)
44
+ concurrent-ruby (~> 1.0.2)
45
+ debug_inspector (0.0.2)
46
+ diff-lcs (1.2.5)
47
+ equalizer (0.0.11)
48
+ expeditor (0.4.0)
49
+ concurrent-ruby (~> 1.0.0)
50
+ concurrent-ruby-ext (~> 1.0.0)
51
+ retryable (> 1.0)
52
+ ffi (1.9.14)
53
+ formatador (0.2.5)
54
+ guard (2.14.0)
55
+ formatador (>= 0.2.4)
56
+ listen (>= 2.7, < 4.0)
57
+ lumberjack (~> 1.0)
58
+ nenv (~> 0.1)
59
+ notiffany (~> 0.0)
60
+ pry (>= 0.9.12)
61
+ shellany (~> 0.0)
62
+ thor (>= 0.18.1)
63
+ guard-compat (1.2.1)
64
+ guard-rspec (4.7.3)
65
+ guard (~> 2.1)
66
+ guard-compat (~> 1.1)
67
+ rspec (>= 2.99.0, < 4.0)
68
+ guard-rubocop (1.2.0)
69
+ guard (~> 2.0)
70
+ rubocop (~> 0.20)
71
+ i18n (0.7.0)
72
+ ice_nine (0.11.2)
73
+ interception (0.5)
74
+ json (1.8.3)
75
+ listen (3.1.5)
76
+ rb-fsevent (~> 0.9, >= 0.9.4)
77
+ rb-inotify (~> 0.9, >= 0.9.7)
78
+ ruby_dep (~> 1.2)
79
+ lumberjack (1.0.10)
80
+ memoizable (0.4.2)
81
+ thread_safe (~> 0.3, >= 0.3.1)
82
+ method_source (0.8.2)
83
+ minitest (5.9.0)
84
+ nenv (0.3.0)
85
+ notiffany (0.1.1)
86
+ nenv (~> 0.1)
87
+ shellany (~> 0.0)
88
+ parser (2.3.1.2)
89
+ ast (~> 2.2)
90
+ powerpack (0.1.1)
91
+ proc_to_ast (0.1.0)
92
+ coderay
93
+ parser
94
+ unparser
95
+ procto (0.0.3)
96
+ pry (0.10.4)
97
+ coderay (~> 1.1.0)
98
+ method_source (~> 0.8.1)
99
+ slop (~> 3.4)
100
+ pry-doc (0.9.0)
101
+ pry (~> 0.9)
102
+ yard (~> 0.8)
103
+ pry-inline (1.0.2)
104
+ pry (~> 0.10.0)
105
+ unicode (~> 0.4.4)
106
+ pry-rescue (1.4.4)
107
+ interception (>= 0.5)
108
+ pry
109
+ pry-stack_explorer (0.4.9.2)
110
+ binding_of_caller (>= 0.7)
111
+ pry (>= 0.9.11)
112
+ rainbow (2.1.0)
113
+ rake (10.5.0)
114
+ rb-fsevent (0.9.7)
115
+ rb-inotify (0.9.7)
116
+ ffi (>= 0.5.0)
117
+ retryable (2.0.4)
118
+ rspec (3.5.0)
119
+ rspec-core (~> 3.5.0)
120
+ rspec-expectations (~> 3.5.0)
121
+ rspec-mocks (~> 3.5.0)
122
+ rspec-core (3.5.2)
123
+ rspec-support (~> 3.5.0)
124
+ rspec-expectations (3.5.0)
125
+ diff-lcs (>= 1.2.0, < 2.0)
126
+ rspec-support (~> 3.5.0)
127
+ rspec-mocks (3.5.0)
128
+ diff-lcs (>= 1.2.0, < 2.0)
129
+ rspec-support (~> 3.5.0)
130
+ rspec-parameterized (0.3.0)
131
+ binding_of_caller
132
+ parser
133
+ proc_to_ast
134
+ rspec (>= 2.13, < 4)
135
+ unparser
136
+ rspec-support (3.5.0)
137
+ rubocop (0.42.0)
138
+ parser (>= 2.3.1.1, < 3.0)
139
+ powerpack (~> 0.1)
140
+ rainbow (>= 1.99.1, < 3.0)
141
+ ruby-progressbar (~> 1.7)
142
+ unicode-display_width (~> 1.0, >= 1.0.1)
143
+ ruby-progressbar (1.8.1)
144
+ ruby_dep (1.3.1)
145
+ shellany (0.0.1)
146
+ slop (3.6.0)
147
+ sqlite3 (1.3.11)
148
+ thor (0.19.1)
149
+ thread_safe (0.3.5)
150
+ tzinfo (1.2.2)
151
+ thread_safe (~> 0.1)
152
+ unicode (0.4.4.2)
153
+ unicode-display_width (1.1.0)
154
+ unparser (0.2.5)
155
+ abstract_type (~> 0.0.7)
156
+ adamantium (~> 0.2.0)
157
+ concord (~> 0.1.5)
158
+ diff-lcs (~> 1.2.5)
159
+ equalizer (~> 0.0.9)
160
+ parser (~> 2.3.0)
161
+ procto (~> 0.0.2)
162
+ yard (0.9.5)
163
+
164
+ PLATFORMS
165
+ ruby
166
+
167
+ DEPENDENCIES
168
+ activerecord (= 4.1.7)
169
+ activerecord-shard_for!
170
+ appraisal
171
+ bundler (~> 1.11)
172
+ guard-rspec
173
+ guard-rubocop
174
+ pry
175
+ pry-doc
176
+ pry-inline
177
+ pry-rescue
178
+ pry-stack_explorer
179
+ rake (~> 10.0)
180
+ rspec (~> 3.0)
181
+ rspec-parameterized
182
+ rubocop
183
+ sqlite3
184
+
185
+ BUNDLED WITH
186
+ 1.12.5