activerecord-turntable 2.5.0 → 3.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -0
  3. data/.travis.yml +3 -7
  4. data/CHANGELOG.md +4 -14
  5. data/Gemfile +3 -0
  6. data/Guardfile +12 -7
  7. data/README.md +11 -19
  8. data/Rakefile +14 -15
  9. data/activerecord-turntable.gemspec +24 -27
  10. data/gemfiles/rails5_0.gemfile +6 -0
  11. data/lib/active_record/turntable/active_record_ext/abstract_adapter.rb +24 -20
  12. data/lib/active_record/turntable/active_record_ext/activerecord_import_ext.rb +6 -16
  13. data/lib/active_record/turntable/active_record_ext/acts_as_archive_extension.rb +25 -16
  14. data/lib/active_record/turntable/active_record_ext/association.rb +33 -14
  15. data/lib/active_record/turntable/active_record_ext/association_preloader.rb +4 -24
  16. data/lib/active_record/turntable/active_record_ext/clever_load.rb +2 -2
  17. data/lib/active_record/turntable/active_record_ext/connection_handler_extension.rb +11 -15
  18. data/lib/active_record/turntable/active_record_ext/database_tasks.rb +9 -9
  19. data/lib/active_record/turntable/active_record_ext/fixtures.rb +11 -41
  20. data/lib/active_record/turntable/active_record_ext/locking_optimistic.rb +40 -147
  21. data/lib/active_record/turntable/active_record_ext/log_subscriber.rb +6 -37
  22. data/lib/active_record/turntable/active_record_ext/migration_proxy.rb +1 -1
  23. data/lib/active_record/turntable/active_record_ext/persistence.rb +54 -148
  24. data/lib/active_record/turntable/active_record_ext/relation.rb +17 -45
  25. data/lib/active_record/turntable/active_record_ext/schema_dumper.rb +80 -78
  26. data/lib/active_record/turntable/active_record_ext/sequencer.rb +6 -15
  27. data/lib/active_record/turntable/active_record_ext/transactions.rb +14 -9
  28. data/lib/active_record/turntable/active_record_ext.rb +15 -16
  29. data/lib/active_record/turntable/algorithm/modulo_algorithm.rb +1 -1
  30. data/lib/active_record/turntable/algorithm/range_algorithm.rb +9 -9
  31. data/lib/active_record/turntable/algorithm/range_bsearch_algorithm.rb +12 -12
  32. data/lib/active_record/turntable/base.rb +27 -14
  33. data/lib/active_record/turntable/cluster.rb +10 -13
  34. data/lib/active_record/turntable/cluster_helper_methods.rb +6 -6
  35. data/lib/active_record/turntable/config.rb +3 -3
  36. data/lib/active_record/turntable/connection_proxy/mixable.rb +1 -1
  37. data/lib/active_record/turntable/connection_proxy.rb +23 -22
  38. data/lib/active_record/turntable/helpers/test_helper.rb +4 -4
  39. data/lib/active_record/turntable/master_shard.rb +12 -7
  40. data/lib/active_record/turntable/migration.rb +41 -47
  41. data/lib/active_record/turntable/mixer/fader/calculate_shards_sum_result.rb +7 -7
  42. data/lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb +12 -12
  43. data/lib/active_record/turntable/mixer.rb +121 -121
  44. data/lib/active_record/turntable/plugin.rb +1 -1
  45. data/lib/active_record/turntable/pool_proxy.rb +7 -19
  46. data/lib/active_record/turntable/query_cache.rb +41 -0
  47. data/lib/active_record/turntable/railtie.rb +7 -5
  48. data/lib/active_record/turntable/railties/databases.rake +19 -20
  49. data/lib/active_record/turntable/seq_shard.rb +15 -15
  50. data/lib/active_record/turntable/sequencer/api.rb +7 -7
  51. data/lib/active_record/turntable/sequencer/barrage.rb +6 -7
  52. data/lib/active_record/turntable/sequencer/mysql.rb +2 -2
  53. data/lib/active_record/turntable/sequencer.rb +15 -15
  54. data/lib/active_record/turntable/shard.rb +23 -20
  55. data/lib/active_record/turntable/sql_tree_patch.rb +59 -57
  56. data/lib/active_record/turntable/util.rb +1 -21
  57. data/lib/active_record/turntable/version.rb +1 -1
  58. data/lib/active_record/turntable.rb +14 -19
  59. data/lib/activerecord-turntable.rb +2 -2
  60. data/script/performance/algorithm +8 -9
  61. data/spec/active_record/turntable/active_record_ext/association_preloader_spec.rb +4 -4
  62. data/spec/active_record/turntable/active_record_ext/association_spec.rb +5 -14
  63. data/spec/active_record/turntable/active_record_ext/clever_load_spec.rb +6 -6
  64. data/spec/active_record/turntable/active_record_ext/fixture_set_spec.rb +4 -4
  65. data/spec/active_record/turntable/active_record_ext/locking_optimistic_spec.rb +2 -15
  66. data/spec/active_record/turntable/active_record_ext/migration_spec.rb +4 -4
  67. data/spec/active_record/turntable/active_record_ext/persistence_spec.rb +17 -15
  68. data/spec/active_record/turntable/active_record_ext/sequencer_spec.rb +1 -1
  69. data/spec/active_record/turntable/active_record_ext/test_fixtures_spec.rb +3 -3
  70. data/spec/active_record/turntable/algorithm/modulo_algorithm_spec.rb +2 -3
  71. data/spec/active_record/turntable/algorithm/range_algorithm_spec.rb +2 -3
  72. data/spec/active_record/turntable/algorithm/range_bsearch_algorithm_spec.rb +2 -3
  73. data/spec/active_record/turntable/algorithm_spec.rb +5 -5
  74. data/spec/active_record/turntable/base_spec.rb +1 -1
  75. data/spec/active_record/turntable/cluster_spec.rb +1 -1
  76. data/spec/active_record/turntable/config_spec.rb +1 -1
  77. data/spec/active_record/turntable/connection_proxy_spec.rb +16 -17
  78. data/spec/active_record/turntable/finder_spec.rb +1 -1
  79. data/spec/active_record/turntable/mixer/fader_spec.rb +1 -1
  80. data/spec/active_record/turntable/mixer_spec.rb +2 -4
  81. data/spec/active_record/turntable/query_cache_spec.rb +28 -0
  82. data/spec/active_record/turntable/sequencer/api_spec.rb +4 -4
  83. data/spec/active_record/turntable/sequencer/barrage_spec.rb +2 -2
  84. data/spec/active_record/turntable/sequencer/mysql_spec.rb +1 -1
  85. data/spec/active_record/turntable/shard_spec.rb +1 -1
  86. data/spec/active_record/turntable/sql_tree_patch_spec.rb +2 -2
  87. data/spec/active_record/turntable/transaction_spec.rb +2 -2
  88. data/spec/active_record/turntable_spec.rb +3 -3
  89. data/spec/migrations/002_create_user_statuses.rb +4 -4
  90. data/spec/migrations/003_create_cards.rb +3 -3
  91. data/spec/migrations/004_create_cards_users.rb +2 -2
  92. data/spec/models/user_status.rb +0 -1
  93. data/spec/spec_helper.rb +15 -14
  94. data/spec/support/turntable_helper.rb +4 -4
  95. metadata +98 -59
  96. data/gemfiles/rails4_0.gemfile +0 -7
  97. data/gemfiles/rails4_1.gemfile +0 -7
  98. data/gemfiles/rails4_2.gemfile +0 -7
  99. data/lib/active_record/turntable/rack/connection_management.rb +0 -18
  100. data/lib/active_record/turntable/rack/query_cache.rb +0 -40
  101. data/lib/active_record/turntable/rack.rb +0 -8
  102. data/spec/active_record/turntable/rack/query_cache_spec.rb +0 -19
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveRecord::Turntable do
4
4
  before(:all) do
5
- ActiveRecord::Base.send(:include, ActiveRecord::Turntable)
5
+ ActiveRecord::Base.include(ActiveRecord::Turntable)
6
6
  end
7
7
 
8
8
  context "#config_file" do
@@ -16,7 +16,7 @@ describe ActiveRecord::Turntable do
16
16
 
17
17
  context "#config_file=" do
18
18
  it "should set config_file" do
19
- ActiveRecord::Base.send(:include, ActiveRecord::Turntable)
19
+ ActiveRecord::Base.include(ActiveRecord::Turntable)
20
20
  filename = "hogefuga"
21
21
  ActiveRecord::Base.turntable_config_file = filename
22
22
  expect(ActiveRecord::Base.turntable_config_file).to eq(filename)
@@ -1,10 +1,10 @@
1
1
  class CreateUserStatuses < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :user_statuses do |t|
4
- t.belongs_to :user, :null => false
5
- t.integer :hp, :null => false, :default => 0
6
- t.integer :mp, :null => false, :default => 0
7
- t.datetime :deleted_at, :default => nil
4
+ t.belongs_to :user, null: false
5
+ t.integer :hp, null: false, default: 0
6
+ t.integer :mp, null: false, default: 0
7
+ t.datetime :deleted_at, default: nil
8
8
 
9
9
  t.timestamps
10
10
  end
@@ -1,9 +1,9 @@
1
1
  class CreateCards < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :cards do |t|
4
- t.string :name, :null => false
5
- t.integer :hp, :null => false, :default => 0
6
- t.integer :mp, :null => false, :default => 0
4
+ t.string :name, null: false
5
+ t.integer :hp, null: false, default: 0
6
+ t.integer :mp, null: false, default: 0
7
7
  t.timestamps
8
8
  end
9
9
  end
@@ -1,8 +1,8 @@
1
1
  class CreateCardsUsers < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :cards_users do |t|
4
- t.belongs_to :card, :null => false
5
- t.belongs_to :user, :null => false
4
+ t.belongs_to :card, null: false
5
+ t.belongs_to :user, null: false
6
6
  t.datetime :deleted_at
7
7
 
8
8
  t.timestamps
@@ -3,5 +3,4 @@ class UserStatus < ActiveRecord::Base
3
3
  turntable :user_cluster, :user_id
4
4
  sequencer :user_seq
5
5
  belongs_to :user
6
- serialize :data, JSON
7
6
  end
data/spec/spec_helper.rb CHANGED
@@ -1,29 +1,30 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- require 'rubygems'
4
- require 'bundler/setup'
5
- require 'rspec/its'
6
- require 'rspec/collection_matchers'
7
- require 'webmock/rspec'
8
- require 'pry'
3
+ require "rubygems"
4
+ require "bundler/setup"
5
+ require "rspec/its"
6
+ require "rspec/collection_matchers"
7
+ require "webmock/rspec"
8
+ require "pry"
9
+ require "timecop"
9
10
  begin
10
- require 'pry-byebug'
11
+ require "pry-byebug"
11
12
  rescue LoadError
12
13
  end
13
14
 
14
- require 'activerecord-turntable'
15
+ require "activerecord-turntable"
15
16
 
16
- require 'coveralls'
17
+ require "coveralls"
17
18
  Coveralls.wear!
18
19
 
19
- MIGRATIONS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), 'migrations'))
20
+ MIGRATIONS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), "migrations"))
20
21
 
21
22
  # Requires supporting files with custom matchers and macros, etc,
22
23
  # in ./support/ and its subdirectories.
23
- ActiveRecord::Base.configurations = YAML.load_file(File.join(File.dirname(__FILE__), 'config/database.yml'))
24
+ ActiveRecord::Base.configurations = YAML.load_file(File.join(File.dirname(__FILE__), "config/database.yml"))
24
25
  ActiveRecord::Base.establish_connection(:test)
25
26
 
26
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
27
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
27
28
 
28
29
  RSpec.configure do |config|
29
30
  include TurntableHelper
@@ -32,6 +33,6 @@ RSpec.configure do |config|
32
33
  config.run_all_when_everything_filtered = true
33
34
 
34
35
  config.before(:each) do
35
- Dir[File.join(File.dirname(File.dirname(__FILE__)), 'spec/models/*.rb')].each { |f| require f }
36
+ Dir[File.join(File.dirname(File.dirname(__FILE__)), "spec/models/*.rb")].each { |f| require f }
36
37
  end
37
38
  end
@@ -1,16 +1,16 @@
1
- require 'active_record'
1
+ require "active_record"
2
2
 
3
3
  module TurntableHelper
4
4
  def reload_turntable!(config_file_name = nil)
5
- ActiveRecord::Base.send(:include, ActiveRecord::Turntable)
5
+ ActiveRecord::Base.include(ActiveRecord::Turntable)
6
6
  ActiveRecord::Base.turntable_config_file = config_file_name
7
7
  ActiveRecord::Turntable::Config.load!(ActiveRecord::Base.turntable_config_file, :test)
8
8
  end
9
9
 
10
10
  def establish_connection_to(env = :test)
11
11
  silence_warnings {
12
- Object.const_set('RAILS_ENV', env.to_s)
13
- Object.const_set('Rails', Object.new)
12
+ Object.const_set("RAILS_ENV", env.to_s)
13
+ Object.const_set("Rails", Object.new)
14
14
  allow(Rails).to receive(:env) { ActiveSupport::StringInquirer.new(RAILS_ENV) }
15
15
  ActiveRecord::Base.logger = Logger.new("/dev/null")
16
16
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-turntable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 3.0.0.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - gussan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-01-04 00:00:00.000000000 Z
12
+ date: 2016-10-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -17,40 +17,68 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 4.0.0
20
+ version: '5.0'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '5.0'
23
+ version: '6.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: 4.0.0
30
+ version: '5.0'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '6.0'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: activesupport
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.0.0
40
+ version: '5.0'
41
41
  - - "<"
42
42
  - !ruby/object:Gem::Version
43
- version: '5.0'
43
+ version: '6.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 4.0.0
50
+ version: '5.0'
51
51
  - - "<"
52
52
  - !ruby/object:Gem::Version
53
- version: '5.0'
53
+ version: '6.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: bsearch
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.5'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.5'
68
+ - !ruby/object:Gem::Dependency
69
+ name: httpclient
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
54
82
  - !ruby/object:Gem::Dependency
55
83
  name: sql_tree
56
84
  requirement: !ruby/object:Gem::Requirement
@@ -66,27 +94,27 @@ dependencies:
66
94
  - !ruby/object:Gem::Version
67
95
  version: 0.2.0
68
96
  - !ruby/object:Gem::Dependency
69
- name: bsearch
97
+ name: activerecord-import
70
98
  requirement: !ruby/object:Gem::Requirement
71
99
  requirements:
72
- - - "~>"
100
+ - - ">="
73
101
  - !ruby/object:Gem::Version
74
- version: '1.5'
75
- type: :runtime
102
+ version: '0'
103
+ type: :development
76
104
  prerelease: false
77
105
  version_requirements: !ruby/object:Gem::Requirement
78
106
  requirements:
79
- - - "~>"
107
+ - - ">="
80
108
  - !ruby/object:Gem::Version
81
- version: '1.5'
109
+ version: '0'
82
110
  - !ruby/object:Gem::Dependency
83
- name: httpclient
111
+ name: barrage
84
112
  requirement: !ruby/object:Gem::Requirement
85
113
  requirements:
86
114
  - - ">="
87
115
  - !ruby/object:Gem::Version
88
116
  version: '0'
89
- type: :runtime
117
+ type: :development
90
118
  prerelease: false
91
119
  version_requirements: !ruby/object:Gem::Requirement
92
120
  requirements:
@@ -94,7 +122,7 @@ dependencies:
94
122
  - !ruby/object:Gem::Version
95
123
  version: '0'
96
124
  - !ruby/object:Gem::Dependency
97
- name: activerecord-import
125
+ name: coveralls
98
126
  requirement: !ruby/object:Gem::Requirement
99
127
  requirements:
100
128
  - - ">="
@@ -108,7 +136,7 @@ dependencies:
108
136
  - !ruby/object:Gem::Version
109
137
  version: '0'
110
138
  - !ruby/object:Gem::Dependency
111
- name: barrage
139
+ name: fabrication
112
140
  requirement: !ruby/object:Gem::Requirement
113
141
  requirements:
114
142
  - - ">="
@@ -122,7 +150,7 @@ dependencies:
122
150
  - !ruby/object:Gem::Version
123
151
  version: '0'
124
152
  - !ruby/object:Gem::Dependency
125
- name: mysql2
153
+ name: faker
126
154
  requirement: !ruby/object:Gem::Requirement
127
155
  requirements:
128
156
  - - ">="
@@ -136,7 +164,7 @@ dependencies:
136
164
  - !ruby/object:Gem::Version
137
165
  version: '0'
138
166
  - !ruby/object:Gem::Dependency
139
- name: rake
167
+ name: guard-rspec
140
168
  requirement: !ruby/object:Gem::Requirement
141
169
  requirements:
142
170
  - - ">="
@@ -150,35 +178,35 @@ dependencies:
150
178
  - !ruby/object:Gem::Version
151
179
  version: '0'
152
180
  - !ruby/object:Gem::Dependency
153
- name: rack
181
+ name: guard-rubocop
154
182
  requirement: !ruby/object:Gem::Requirement
155
183
  requirements:
156
- - - "<"
184
+ - - ">="
157
185
  - !ruby/object:Gem::Version
158
- version: '2'
186
+ version: '0'
159
187
  type: :development
160
188
  prerelease: false
161
189
  version_requirements: !ruby/object:Gem::Requirement
162
190
  requirements:
163
- - - "<"
191
+ - - ">="
164
192
  - !ruby/object:Gem::Version
165
- version: '2'
193
+ version: '0'
166
194
  - !ruby/object:Gem::Dependency
167
- name: rspec
195
+ name: mysql2
168
196
  requirement: !ruby/object:Gem::Requirement
169
197
  requirements:
170
- - - "~>"
198
+ - - ">="
171
199
  - !ruby/object:Gem::Version
172
- version: 3.5.0
200
+ version: '0'
173
201
  type: :development
174
202
  prerelease: false
175
203
  version_requirements: !ruby/object:Gem::Requirement
176
204
  requirements:
177
- - - "~>"
205
+ - - ">="
178
206
  - !ruby/object:Gem::Version
179
- version: 3.5.0
207
+ version: '0'
180
208
  - !ruby/object:Gem::Dependency
181
- name: rspec-its
209
+ name: onkcop
182
210
  requirement: !ruby/object:Gem::Requirement
183
211
  requirements:
184
212
  - - ">="
@@ -192,7 +220,7 @@ dependencies:
192
220
  - !ruby/object:Gem::Version
193
221
  version: '0'
194
222
  - !ruby/object:Gem::Dependency
195
- name: rspec-collection_matchers
223
+ name: pry
196
224
  requirement: !ruby/object:Gem::Requirement
197
225
  requirements:
198
226
  - - ">="
@@ -206,7 +234,7 @@ dependencies:
206
234
  - !ruby/object:Gem::Version
207
235
  version: '0'
208
236
  - !ruby/object:Gem::Dependency
209
- name: fabrication
237
+ name: pry-byebug
210
238
  requirement: !ruby/object:Gem::Requirement
211
239
  requirements:
212
240
  - - ">="
@@ -220,7 +248,7 @@ dependencies:
220
248
  - !ruby/object:Gem::Version
221
249
  version: '0'
222
250
  - !ruby/object:Gem::Dependency
223
- name: faker
251
+ name: rack
224
252
  requirement: !ruby/object:Gem::Requirement
225
253
  requirements:
226
254
  - - ">="
@@ -234,7 +262,7 @@ dependencies:
234
262
  - !ruby/object:Gem::Version
235
263
  version: '0'
236
264
  - !ruby/object:Gem::Dependency
237
- name: webmock
265
+ name: rake
238
266
  requirement: !ruby/object:Gem::Requirement
239
267
  requirements:
240
268
  - - ">="
@@ -248,7 +276,21 @@ dependencies:
248
276
  - !ruby/object:Gem::Version
249
277
  version: '0'
250
278
  - !ruby/object:Gem::Dependency
251
- name: pry
279
+ name: rspec
280
+ requirement: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: 3.1.0
285
+ type: :development
286
+ prerelease: false
287
+ version_requirements: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: 3.1.0
292
+ - !ruby/object:Gem::Dependency
293
+ name: rspec-collection_matchers
252
294
  requirement: !ruby/object:Gem::Requirement
253
295
  requirements:
254
296
  - - ">="
@@ -262,7 +304,7 @@ dependencies:
262
304
  - !ruby/object:Gem::Version
263
305
  version: '0'
264
306
  - !ruby/object:Gem::Dependency
265
- name: pry-byebug
307
+ name: rspec-its
266
308
  requirement: !ruby/object:Gem::Requirement
267
309
  requirements:
268
310
  - - ">="
@@ -276,7 +318,7 @@ dependencies:
276
318
  - !ruby/object:Gem::Version
277
319
  version: '0'
278
320
  - !ruby/object:Gem::Dependency
279
- name: guard-rspec
321
+ name: rubocop
280
322
  requirement: !ruby/object:Gem::Requirement
281
323
  requirements:
282
324
  - - ">="
@@ -290,21 +332,21 @@ dependencies:
290
332
  - !ruby/object:Gem::Version
291
333
  version: '0'
292
334
  - !ruby/object:Gem::Dependency
293
- name: listen
335
+ name: rubocop-rspec
294
336
  requirement: !ruby/object:Gem::Requirement
295
337
  requirements:
296
- - - '='
338
+ - - ">="
297
339
  - !ruby/object:Gem::Version
298
- version: 3.0.6
340
+ version: '0'
299
341
  type: :development
300
342
  prerelease: false
301
343
  version_requirements: !ruby/object:Gem::Requirement
302
344
  requirements:
303
- - - '='
345
+ - - ">="
304
346
  - !ruby/object:Gem::Version
305
- version: 3.0.6
347
+ version: '0'
306
348
  - !ruby/object:Gem::Dependency
307
- name: coveralls
349
+ name: timecop
308
350
  requirement: !ruby/object:Gem::Requirement
309
351
  requirements:
310
352
  - - ">="
@@ -318,7 +360,7 @@ dependencies:
318
360
  - !ruby/object:Gem::Version
319
361
  version: '0'
320
362
  - !ruby/object:Gem::Dependency
321
- name: growl
363
+ name: webmock
322
364
  requirement: !ruby/object:Gem::Requirement
323
365
  requirements:
324
366
  - - ">="
@@ -344,6 +386,7 @@ files:
344
386
  - ".document"
345
387
  - ".gitignore"
346
388
  - ".rspec"
389
+ - ".rubocop.yml"
347
390
  - ".travis.yml"
348
391
  - CHANGELOG.md
349
392
  - Gemfile
@@ -352,9 +395,7 @@ files:
352
395
  - README.md
353
396
  - Rakefile
354
397
  - activerecord-turntable.gemspec
355
- - gemfiles/rails4_0.gemfile
356
- - gemfiles/rails4_1.gemfile
357
- - gemfiles/rails4_2.gemfile
398
+ - gemfiles/rails5_0.gemfile
358
399
  - lib/active_record/turntable.rb
359
400
  - lib/active_record/turntable/active_record_ext.rb
360
401
  - lib/active_record/turntable/active_record_ext/.gitkeep
@@ -401,9 +442,7 @@ files:
401
442
  - lib/active_record/turntable/mixer/fader/update_shards_merge_result.rb
402
443
  - lib/active_record/turntable/plugin.rb
403
444
  - lib/active_record/turntable/pool_proxy.rb
404
- - lib/active_record/turntable/rack.rb
405
- - lib/active_record/turntable/rack/connection_management.rb
406
- - lib/active_record/turntable/rack/query_cache.rb
445
+ - lib/active_record/turntable/query_cache.rb
407
446
  - lib/active_record/turntable/railtie.rb
408
447
  - lib/active_record/turntable/railties/databases.rake
409
448
  - lib/active_record/turntable/seq_shard.rb
@@ -440,7 +479,7 @@ files:
440
479
  - spec/active_record/turntable/finder_spec.rb
441
480
  - spec/active_record/turntable/mixer/fader_spec.rb
442
481
  - spec/active_record/turntable/mixer_spec.rb
443
- - spec/active_record/turntable/rack/query_cache_spec.rb
482
+ - spec/active_record/turntable/query_cache_spec.rb
444
483
  - spec/active_record/turntable/sequencer/api_spec.rb
445
484
  - spec/active_record/turntable/sequencer/barrage_spec.rb
446
485
  - spec/active_record/turntable/sequencer/mysql_spec.rb
@@ -479,15 +518,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
479
518
  requirements:
480
519
  - - ">="
481
520
  - !ruby/object:Gem::Version
482
- version: 2.0.0
521
+ version: 2.2.2
483
522
  required_rubygems_version: !ruby/object:Gem::Requirement
484
523
  requirements:
485
- - - ">="
524
+ - - ">"
486
525
  - !ruby/object:Gem::Version
487
- version: '0'
526
+ version: 1.3.1
488
527
  requirements: []
489
528
  rubyforge_project: activerecord-turntable
490
- rubygems_version: 2.5.2
529
+ rubygems_version: 2.5.1
491
530
  signing_key:
492
531
  specification_version: 4
493
532
  summary: ActiveRecord sharding extension
@@ -512,7 +551,7 @@ test_files:
512
551
  - spec/active_record/turntable/finder_spec.rb
513
552
  - spec/active_record/turntable/mixer/fader_spec.rb
514
553
  - spec/active_record/turntable/mixer_spec.rb
515
- - spec/active_record/turntable/rack/query_cache_spec.rb
554
+ - spec/active_record/turntable/query_cache_spec.rb
516
555
  - spec/active_record/turntable/sequencer/api_spec.rb
517
556
  - spec/active_record/turntable/sequencer/barrage_spec.rb
518
557
  - spec/active_record/turntable/sequencer/mysql_spec.rb
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "activerecord", "~> 4.0.0"
4
- gem "activesupport", "~> 4.0.0"
5
- gem "mysql2", "~> 0.3.20"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "activerecord", "~> 4.1.0"
4
- gem "activesupport", "~> 4.1.0"
5
- gem "mysql2", "~> 0.3.20"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "activerecord", "~> 4.2.0"
4
- gem "activesupport", "~> 4.2.0"
5
- gem "mysql2", "~> 0.3.20"
6
-
7
- gemspec :path => "../"
@@ -1,18 +0,0 @@
1
- module ActiveRecord::Turntable
2
- module Rack
3
- class ConnectionManagement
4
- def initialize(app)
5
- @app = app
6
- end
7
-
8
- def call(env)
9
- @app.call(env)
10
- ensure
11
- unless env.key?("rack.test")
12
- ActiveRecord::Base.connection_handler.clear_all_connections!
13
- ActiveRecord::Base.clear_all_connections!
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,40 +0,0 @@
1
- require 'rack/body_proxy'
2
- require 'active_record/query_cache'
3
-
4
- module ActiveRecord
5
- module Turntable
6
- module Rack
7
- class QueryCache < ActiveRecord::QueryCache
8
- def call(env)
9
- enabled = ActiveRecord::Base.connection.query_cache_enabled
10
- connection_id = ActiveRecord::Base.connection_id
11
- klasses = ActiveRecord::Base.turntable_connections.values
12
- klasses.each do |k|
13
- k.connection.enable_query_cache!
14
- end
15
-
16
- response = @app.call(env)
17
- response[2] = ::Rack::BodyProxy.new(response[2]) do
18
- restore_query_cache_settings(connection_id, enabled)
19
- end
20
-
21
- response
22
- rescue Exception => e
23
- restore_query_cache_settings(connection_id, enabled)
24
- raise e
25
- end
26
-
27
- private
28
-
29
- def restore_query_cache_settings(connection_id, enabled)
30
- klasses = ActiveRecord::Base.turntable_connections.values
31
- klasses.each do |k|
32
- ActiveRecord::Base.connection_id = connection_id
33
- k.connection.clear_query_cache
34
- k.connection.disable_query_cache! unless enabled
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,8 +0,0 @@
1
- module ActiveRecord::Turntable
2
- module Rack
3
- extend ActiveSupport::Autoload
4
-
5
- autoload :ConnectionManagement
6
- autoload :QueryCache
7
- end
8
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveRecord::Turntable::Rack::QueryCache do
4
- before(:all) do
5
- reload_turntable!(File.join(File.dirname(__FILE__), "../../../config/turntable.yml"))
6
- end
7
-
8
- before do
9
- establish_connection_to(:test)
10
- truncate_shard
11
- end
12
-
13
- let(:mw) { ActiveRecord::Turntable::Rack::QueryCache.new lambda {|env| [200, {}]} }
14
- subject { mw.call({}) }
15
-
16
- it "should returns 200 response" do
17
- expect(subject.first).to eq(200)
18
- end
19
- end