switchman 1.1.0 → 1.2.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 +8 -8
- data/app/models/switchman/shard.rb +10 -3
- data/lib/switchman/active_record/association.rb +36 -10
- data/lib/switchman/active_record/base.rb +9 -5
- data/lib/switchman/active_record/calculations.rb +12 -11
- data/lib/switchman/active_record/connection_handler.rb +102 -47
- data/lib/switchman/active_record/finder_methods.rb +1 -1
- data/lib/switchman/active_record/query_methods.rb +50 -25
- data/lib/switchman/active_record/relation.rb +4 -4
- data/lib/switchman/active_record/spawn_methods.rb +76 -29
- data/lib/switchman/connection_pool_proxy.rb +2 -1
- data/lib/switchman/database_server.rb +4 -2
- data/lib/switchman/engine.rb +1 -1
- data/lib/switchman/r_spec_helper.rb +14 -6
- data/lib/switchman/rails.rb +7 -9
- data/lib/switchman/test_helper.rb +4 -3
- data/lib/switchman/version.rb +1 -1
- data/spec/dummy/app/models/appendage.rb +2 -4
- data/spec/dummy/app/models/digit.rb +2 -4
- data/spec/dummy/app/models/feature.rb +0 -2
- data/spec/dummy/app/models/user.rb +0 -2
- data/spec/dummy/config/application.rb +0 -6
- data/spec/dummy/config/environments/development.rb +2 -9
- data/spec/dummy/config/environments/production.rb +2 -3
- data/spec/dummy/config/environments/test.rb +2 -11
- data/spec/dummy/config/routes.rb +2 -2
- data/spec/dummy/log/test.log +9947 -0
- data/spec/dummy/tmp/cache/375/530/shard%2F3200 +1 -0
- data/spec/dummy/tmp/cache/37A/590/shard%2F3214 +1 -0
- data/spec/dummy/tmp/cache/37E/620/shard%2F3182 +0 -0
- data/spec/dummy/tmp/cache/381/650/shard%2F3185 +1 -0
- data/spec/dummy/tmp/cache/382/650/shard%2F3177 +1 -0
- data/spec/dummy/tmp/cache/386/6B0/shard%2F3199 +1 -0
- data/spec/dummy/tmp/cache/3A6/F80/shard%2F13200 +1 -0
- data/spec/dummy/tmp/cache/3B0/080/shard%2F13183 +1 -0
- data/spec/dummy/tmp/cache/3B1/070/shard%2F13166 +1 -0
- data/spec/lib/active_record/association_spec.rb +21 -11
- data/spec/lib/active_record/finder_methods_spec.rb +1 -1
- data/spec/lib/active_record/query_cache_spec.rb +17 -17
- data/spec/lib/active_record/query_methods_spec.rb +6 -5
- data/spec/lib/active_record/relation_spec.rb +1 -1
- data/spec/lib/active_record/spawn_methods_spec.rb +5 -4
- data/spec/lib/connection_pool_proxy_spec.rb +2 -0
- data/spec/lib/database_server_spec.rb +12 -4
- data/spec/lib/shackles_spec.rb +8 -6
- metadata +61 -11
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry:@value{ I"id:ETi�I" name;TI"switchman_test_shard_3200;TI"database_server_id;TI"1;TI"default;TF:@created_atf1395766435.695145:@expires_in0
|
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry:@value:nil:@created_atf1395766435.522779:@expires_in0
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1395766408.469534:@value":nil
|
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1395678017.3012779:@value":nil
|
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry:@value{ I"id:ETiI" name;TI"switchman_test_shard_3199;TI"database_server_id;TI" test;TI"default;TF:@created_atf1395766435.693439:@expires_in0
|
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry:@value:nil:@created_atf1395766435.380675:@expires_in0
|
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1395766408.394197:@value":nil
|
@@ -0,0 +1 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1395678017.240988:@value":nil
|
@@ -25,7 +25,8 @@ module Switchman
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should set shard value to parent for association scope" do
|
28
|
-
scope = @user1.appendages
|
28
|
+
scope = @user1.appendages
|
29
|
+
scope = ::Rails.version < '4' ? scope.scoped : scope.scope
|
29
30
|
scope.shard_value.should == @user1
|
30
31
|
scope.shard_source_value.should == :association
|
31
32
|
end
|
@@ -39,9 +40,10 @@ module Switchman
|
|
39
40
|
|
40
41
|
describe "transaction" do
|
41
42
|
it "should activate the owner's shard and start the transaction on that shard" do
|
43
|
+
base_value = @user1.shard.activate { User.connection.open_transactions }
|
42
44
|
@user1.appendages.transaction(:requires_new => true) do
|
43
45
|
Shard.current.should == @shard1
|
44
|
-
User.connection.open_transactions.should ==
|
46
|
+
User.connection.open_transactions.should == base_value + 1
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
@@ -66,7 +68,11 @@ module Switchman
|
|
66
68
|
d1 = a1.digits.create!
|
67
69
|
d1.shard.should == @shard1
|
68
70
|
|
69
|
-
|
71
|
+
if ::Rails.version < '4'
|
72
|
+
@user1.digits.scoped.shard_value.should == @user1
|
73
|
+
else
|
74
|
+
@user1.digits.scope.shard_value.should == @user1
|
75
|
+
end
|
70
76
|
@user1.digits.find(d1.id).should == d1
|
71
77
|
end
|
72
78
|
|
@@ -99,9 +105,15 @@ module Switchman
|
|
99
105
|
it "should properly set up a cross-shard-category query" do
|
100
106
|
@shard1.activate(:mirror_universe) do
|
101
107
|
mirror_user = MirrorUser.create!
|
102
|
-
relation = mirror_user.association(:user)
|
108
|
+
relation = mirror_user.association(:user)
|
109
|
+
relation = ::Rails.version < '4' ? relation.scoped : relation.scope
|
103
110
|
relation.shard_value.should == Shard.default
|
104
|
-
|
111
|
+
if ::Rails.version < '4'
|
112
|
+
relation.where_values.first.right.should == mirror_user.global_id
|
113
|
+
else
|
114
|
+
relation.where_values.first.right.should be_a(Arel::Nodes::BindParam)
|
115
|
+
relation.bind_values.map(&:last).should == [mirror_user.global_id]
|
116
|
+
end
|
105
117
|
end
|
106
118
|
end
|
107
119
|
|
@@ -229,12 +241,10 @@ module Switchman
|
|
229
241
|
user3 = User.create!
|
230
242
|
user3.appendages.create!
|
231
243
|
|
232
|
-
appendages = Appendage.
|
233
|
-
appendages2 = Appendage.includes(:user).all
|
244
|
+
appendages = Appendage.includes(:user).to_a
|
234
245
|
@user1.delete
|
235
246
|
|
236
247
|
appendages.map(&:user).sort.should == [@user1, @user2, user3].sort
|
237
|
-
appendages2.map(&:user).sort.should == [@user1, @user2, user3].sort
|
238
248
|
end
|
239
249
|
|
240
250
|
it "should preload belongs_to :through associations across shards" do
|
@@ -244,7 +254,7 @@ module Switchman
|
|
244
254
|
a2 = @shard1.activate {Appendage.create!(:user => @user2) }
|
245
255
|
d2 = Digit.create!(:appendage => a2)
|
246
256
|
|
247
|
-
digits = Digit.includes(:user).
|
257
|
+
digits = Digit.includes(:user).to_a
|
248
258
|
@user1.delete
|
249
259
|
|
250
260
|
digits.map(&:user).sort.should == [@user1, @user2].sort
|
@@ -258,7 +268,7 @@ module Switchman
|
|
258
268
|
User.associated_shards_map = { @user1.global_id => [@shard1, @shard2] }
|
259
269
|
|
260
270
|
begin
|
261
|
-
users = User.where(:id => [@user1, @user2]).includes(:appendages).
|
271
|
+
users = User.where(:id => [@user1, @user2]).includes(:appendages).to_a
|
262
272
|
users.each {|u| u.appendages.loaded?.should be_true}
|
263
273
|
|
264
274
|
u1 = users.detect {|u| u.id == @user1.id}
|
@@ -294,7 +304,7 @@ module Switchman
|
|
294
304
|
Appendage.associated_shards_map = { a2.global_id => [@shard1, @shard2], a6.global_id => [@shard1] }
|
295
305
|
|
296
306
|
begin
|
297
|
-
users = User.where(:id => [@user1, @user2]).includes(:digits).
|
307
|
+
users = User.where(:id => [@user1, @user2]).includes(:digits).to_a
|
298
308
|
users.each {|u| u.digits.loaded?.should be_true}
|
299
309
|
|
300
310
|
u1 = users.detect {|u| u.id == @user1.id}
|
@@ -43,7 +43,7 @@ module Switchman
|
|
43
43
|
|
44
44
|
it "should work for a multi-shard scope" do
|
45
45
|
user2 = @shard2.activate { User.create!(name: "multi-shard exists") }
|
46
|
-
User.where(name: "multi-shard exists").shard(Shard.scoped).exists?.should be_true
|
46
|
+
User.where(name: "multi-shard exists").shard(::Rails.version < '4' ? Shard.scoped : Shard.all).exists?.should be_true
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
@@ -52,7 +52,7 @@ module Switchman
|
|
52
52
|
@shard3.activate do
|
53
53
|
User.create!
|
54
54
|
end
|
55
|
-
@shard1.activate { User.all }.should_not == @shard3.activate { User.all }
|
55
|
+
@shard1.activate { User.all.to_a }.should_not == @shard3.activate { User.all.to_a }
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "query_cache_enabled" do
|
@@ -167,13 +167,13 @@ module Switchman
|
|
167
167
|
describe "select_all" do
|
168
168
|
it "should cache when query cache enabled" do
|
169
169
|
User.connection.enable_query_cache!
|
170
|
-
User.all
|
170
|
+
User.all.to_a
|
171
171
|
User.connection.query_cache.should_not be_empty
|
172
172
|
end
|
173
173
|
|
174
174
|
it "should not cache when query cache disabled" do
|
175
175
|
User.connection.disable_query_cache!
|
176
|
-
User.all
|
176
|
+
User.all.to_a
|
177
177
|
User.connection.query_cache.should be_empty
|
178
178
|
end
|
179
179
|
|
@@ -181,12 +181,12 @@ module Switchman
|
|
181
181
|
User.connection.disable_query_cache!
|
182
182
|
threaded(
|
183
183
|
lambda{ |cc| User.connection.cache{ cc.call } },
|
184
|
-
lambda{ User.all; User.connection.query_cache.should be_empty })
|
184
|
+
lambda{ User.all.to_a; User.connection.query_cache.should be_empty })
|
185
185
|
end
|
186
186
|
|
187
187
|
it "should not cache when query is locked" do
|
188
188
|
User.connection.enable_query_cache!
|
189
|
-
User.lock.
|
189
|
+
User.lock.to_a
|
190
190
|
User.connection.query_cache.should be_empty
|
191
191
|
end
|
192
192
|
end
|
@@ -194,14 +194,14 @@ module Switchman
|
|
194
194
|
describe "insert" do
|
195
195
|
it "should clear thread's query cache if enabled" do
|
196
196
|
User.connection.enable_query_cache!
|
197
|
-
User.all
|
197
|
+
User.all.to_a
|
198
198
|
User.create!
|
199
199
|
User.connection.query_cache.should be_empty
|
200
200
|
end
|
201
201
|
|
202
202
|
it "should not clear thread's query cache if disabled" do
|
203
203
|
User.connection.enable_query_cache!
|
204
|
-
User.all
|
204
|
+
User.all.to_a
|
205
205
|
User.connection.disable_query_cache!
|
206
206
|
User.create!
|
207
207
|
User.connection.query_cache.should_not be_empty
|
@@ -209,7 +209,7 @@ module Switchman
|
|
209
209
|
|
210
210
|
it "should not clear thread's query cache if disabled but other thread's enabled" do
|
211
211
|
User.connection.enable_query_cache!
|
212
|
-
User.all
|
212
|
+
User.all.to_a
|
213
213
|
User.connection.disable_query_cache!
|
214
214
|
threaded(
|
215
215
|
lambda{ |cc| User.create!; cc.call },
|
@@ -218,7 +218,7 @@ module Switchman
|
|
218
218
|
|
219
219
|
it "should not clear other thread's query cache" do
|
220
220
|
User.connection.enable_query_cache!
|
221
|
-
User.all
|
221
|
+
User.all.to_a
|
222
222
|
User.connection.disable_query_cache!
|
223
223
|
threaded(
|
224
224
|
lambda{ |cc| User.create!; cc.call },
|
@@ -233,14 +233,14 @@ module Switchman
|
|
233
233
|
|
234
234
|
it "should clear thread's query cache if enabled" do
|
235
235
|
User.connection.enable_query_cache!
|
236
|
-
User.all
|
236
|
+
User.all.to_a
|
237
237
|
User.update_all(updated_at: Time.now)
|
238
238
|
User.connection.query_cache.should be_empty
|
239
239
|
end
|
240
240
|
|
241
241
|
it "should not clear thread's query cache if disabled" do
|
242
242
|
User.connection.enable_query_cache!
|
243
|
-
User.all
|
243
|
+
User.all.to_a
|
244
244
|
User.connection.disable_query_cache!
|
245
245
|
User.update_all(updated_at: Time.now)
|
246
246
|
User.connection.query_cache.should_not be_empty
|
@@ -257,7 +257,7 @@ module Switchman
|
|
257
257
|
|
258
258
|
it "should not clear thread's query cache if disabled but other thread's enabled" do
|
259
259
|
User.connection.enable_query_cache!
|
260
|
-
User.all
|
260
|
+
User.all.to_a
|
261
261
|
User.connection.disable_query_cache!
|
262
262
|
threaded(
|
263
263
|
lambda{ |cc| User.update_all(updated_at: Time.now); cc.call },
|
@@ -266,7 +266,7 @@ module Switchman
|
|
266
266
|
|
267
267
|
it "should not clear other thread's query cache" do
|
268
268
|
User.connection.enable_query_cache!
|
269
|
-
User.all
|
269
|
+
User.all.to_a
|
270
270
|
User.connection.disable_query_cache!
|
271
271
|
threaded(
|
272
272
|
lambda{ |cc| User.update_all(updated_at: Time.now); cc.call },
|
@@ -282,14 +282,14 @@ module Switchman
|
|
282
282
|
|
283
283
|
it "should clear thread's query cache if enabled" do
|
284
284
|
User.connection.enable_query_cache!
|
285
|
-
User.all
|
285
|
+
User.all.to_a
|
286
286
|
User.delete_all
|
287
287
|
User.connection.query_cache.should be_empty
|
288
288
|
end
|
289
289
|
|
290
290
|
it "should not clear thread's query cache if disabled" do
|
291
291
|
User.connection.enable_query_cache!
|
292
|
-
User.all
|
292
|
+
User.all.to_a
|
293
293
|
User.connection.disable_query_cache!
|
294
294
|
User.delete_all
|
295
295
|
User.connection.query_cache.should_not be_empty
|
@@ -306,7 +306,7 @@ module Switchman
|
|
306
306
|
|
307
307
|
it "should not clear thread's query cache if disabled but other thread's enabled" do
|
308
308
|
User.connection.enable_query_cache!
|
309
|
-
User.all
|
309
|
+
User.all.to_a
|
310
310
|
User.connection.disable_query_cache!
|
311
311
|
threaded(
|
312
312
|
lambda{ |cc| User.delete_all; cc.call },
|
@@ -315,7 +315,7 @@ module Switchman
|
|
315
315
|
|
316
316
|
it "should not clear other thread's query cache" do
|
317
317
|
User.connection.enable_query_cache!
|
318
|
-
User.all
|
318
|
+
User.all.to_a
|
319
319
|
User.connection.disable_query_cache!
|
320
320
|
threaded(
|
321
321
|
lambda{ |cc| User.delete_all; cc.call },
|
@@ -31,22 +31,22 @@ module Switchman
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should be the default shard if it's a scope of Shard" do
|
34
|
-
User.shard(Shard.scoped).primary_shard.should == Shard.default
|
34
|
+
User.shard(::Rails.version < '4' ? Shard.scoped : Shard.all).primary_shard.should == Shard.default
|
35
35
|
@shard1.activate do
|
36
|
-
User.shard(Shard.scoped).primary_shard.should == Shard.default
|
36
|
+
User.shard(::Rails.version < '4' ? Shard.scoped : Shard.all).primary_shard.should == Shard.default
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should default to the current shard" do
|
42
|
-
relation = User.scoped
|
42
|
+
relation = ::Rails.version < '4' ? User.scoped : User.all
|
43
43
|
relation.shard_value.should == Shard.default
|
44
44
|
relation.shard_source_value.should == :implicit
|
45
45
|
|
46
46
|
@shard1.activate do
|
47
47
|
relation.shard_value.should == Shard.default
|
48
48
|
|
49
|
-
relation = User.scoped
|
49
|
+
relation = ::Rails.version < '4' ? User.scoped : User.all
|
50
50
|
relation.shard_value.should == @shard1
|
51
51
|
relation.shard_source_value.should == :implicit
|
52
52
|
end
|
@@ -145,7 +145,8 @@ module Switchman
|
|
145
145
|
grandchild = child.children.create!
|
146
146
|
child.reload.parent.should == @user1
|
147
147
|
|
148
|
-
relation = @user1.association(:grandchildren)
|
148
|
+
relation = @user1.association(:grandchildren)
|
149
|
+
relation = ::Rails.version < '4' ? relation.scoped : relation.scope
|
149
150
|
|
150
151
|
attribute = relation.where_values.first.left
|
151
152
|
attribute.name.to_s.should == 'parent_id'
|
@@ -16,7 +16,7 @@ module Switchman
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should activate multiple shards if necessary" do
|
19
|
-
User.where(:id => [@user1.id, @user2.id]).
|
19
|
+
User.where(:id => [@user1.id, @user2.id]).sort_by(&:id).should == [@user1, @user2].sort_by(&:id)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -20,20 +20,21 @@ module Switchman
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should ignore implicit shard value lhs" do
|
23
|
-
|
23
|
+
scope = ::Rails.version < '4' ? User.scoped : User.all
|
24
|
+
result = scope.merge(User.shard(@shard1))
|
24
25
|
result.shard_value.should == @shard1
|
25
26
|
result.shard_source_value.should == :explicit
|
26
27
|
end
|
27
28
|
|
28
29
|
it "should ignore implicit shard value rhs" do
|
29
|
-
result = User.shard(@shard1).merge(User.scoped)
|
30
|
+
result = User.shard(@shard1).merge(::Rails.version < '4' ? User.scoped : User.all)
|
30
31
|
result.shard_value.should == @shard1
|
31
32
|
result.shard_source_value.should == :explicit
|
32
33
|
end
|
33
34
|
|
34
35
|
it "should take lhs shard_value for double implicit" do
|
35
|
-
scope1 = @shard2.activate { User.scoped }
|
36
|
-
result = scope1.merge(User.scoped)
|
36
|
+
scope1 = @shard2.activate { ::Rails.version < '4' ? User.scoped : User.all }
|
37
|
+
result = scope1.merge(::Rails.version < '4' ? User.scoped : User.all)
|
37
38
|
result.shard_value.should == @shard2
|
38
39
|
result.shard_source_value.should == :implicit
|
39
40
|
end
|
@@ -2,6 +2,8 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
module Switchman
|
4
4
|
describe ConnectionPoolProxy do
|
5
|
+
include RSpecHelper
|
6
|
+
|
5
7
|
it "should not share connections for sqlite shards on the same db" do
|
6
8
|
@db = DatabaseServer.create(:config => { :adapter => 'sqlite3', :database => ':memory:' })
|
7
9
|
@sqlite_shard1 = @db.shards.create!
|
@@ -66,8 +66,12 @@ module Switchman
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should be able to create a new sqlite shard from a given server" do
|
69
|
-
|
70
|
-
|
69
|
+
db = DatabaseServer.create(:config => { :adapter => 'sqlite3', :database => '%{shard_name}', :shard_name => ':memory:' })
|
70
|
+
begin
|
71
|
+
create_shard(db)
|
72
|
+
ensure
|
73
|
+
db.destroy
|
74
|
+
end
|
71
75
|
end
|
72
76
|
|
73
77
|
context "non-transactional" do
|
@@ -83,8 +87,12 @@ module Switchman
|
|
83
87
|
pending 'A "real" database"' unless %w{MySQL Mysql2 PostgreSQL}.include?(adapter)
|
84
88
|
|
85
89
|
# So, it's really the same server, but we want separate connections
|
86
|
-
|
87
|
-
|
90
|
+
db = DatabaseServer.create(:config => Shard.default.database_server.config)
|
91
|
+
begin
|
92
|
+
create_shard(db)
|
93
|
+
ensure
|
94
|
+
db.destroy
|
95
|
+
end
|
88
96
|
end
|
89
97
|
|
90
98
|
class MyException < Exception; end
|
data/spec/lib/shackles_spec.rb
CHANGED
@@ -23,11 +23,13 @@ module Switchman
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should correctly set up pools for sharding categories" do
|
26
|
-
models = ::ActiveRecord::Base.connection_handler.
|
27
|
-
default_pools =
|
26
|
+
models = ::ActiveRecord::Base.connection_handler.send(:class_to_pool)
|
27
|
+
default_pools = {}
|
28
|
+
models.each_pair { |k, v| default_pools[k] = v.current_pool }
|
28
29
|
::Shackles.activate(:slave_that_no_one_else_uses) do
|
29
|
-
models = ::ActiveRecord::Base.connection_handler.
|
30
|
-
pools =
|
30
|
+
models = ::ActiveRecord::Base.connection_handler.send(:class_to_pool)
|
31
|
+
pools = {}
|
32
|
+
models.each_pair { |k, v| pools[k] = v.current_pool }
|
31
33
|
default_pools.keys.sort.should == pools.keys.sort
|
32
34
|
default_pools.keys.each do |model|
|
33
35
|
default_pools[model].should_not == pools[model]
|
@@ -71,7 +73,7 @@ module Switchman
|
|
71
73
|
|
72
74
|
u = User.create!
|
73
75
|
Shard.default.database_server.expects(:unshackle).once.returns([])
|
74
|
-
User.
|
76
|
+
User.lock.first
|
75
77
|
Shard.default.database_server.expects(:unshackle).once.returns([])
|
76
78
|
lambda { u.lock! }.should raise_error(::ActiveRecord::RecordNotFound)
|
77
79
|
ensure
|
@@ -143,7 +145,7 @@ module Switchman
|
|
143
145
|
end
|
144
146
|
|
145
147
|
def actual_connection_count
|
146
|
-
::ActiveRecord::Base.connection_pool.current_pool.instance_variable_get(:@reserved_connections).
|
148
|
+
::ActiveRecord::Base.connection_pool.current_pool.instance_variable_get(:@reserved_connections).size
|
147
149
|
end
|
148
150
|
|
149
151
|
it "should really return active connections to the pool in all envs" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switchman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
@@ -10,36 +10,68 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-03-
|
13
|
+
date: 2014-03-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: railties
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.2
|
21
|
+
version: '3.2'
|
22
|
+
- - <
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '4.1'
|
22
25
|
type: :runtime
|
23
26
|
prerelease: false
|
24
27
|
version_requirements: !ruby/object:Gem::Requirement
|
25
28
|
requirements:
|
26
|
-
- -
|
29
|
+
- - ! '>='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '3.2'
|
32
|
+
- - <
|
27
33
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
34
|
+
version: '4.1'
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: activerecord
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '3.2'
|
42
|
+
- - <
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '4.1'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ! '>='
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '3.2'
|
52
|
+
- - <
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.1'
|
29
55
|
- !ruby/object:Gem::Dependency
|
30
56
|
name: shackles
|
31
57
|
requirement: !ruby/object:Gem::Requirement
|
32
58
|
requirements:
|
33
|
-
- -
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.3
|
62
|
+
- - <
|
34
63
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
64
|
+
version: '2'
|
36
65
|
type: :runtime
|
37
66
|
prerelease: false
|
38
67
|
version_requirements: !ruby/object:Gem::Requirement
|
39
68
|
requirements:
|
40
|
-
- -
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 1.0.3
|
72
|
+
- - <
|
41
73
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
74
|
+
version: '2'
|
43
75
|
- !ruby/object:Gem::Dependency
|
44
76
|
name: debugger
|
45
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -383,6 +415,7 @@ files:
|
|
383
415
|
- spec/dummy/tmp/cache/374/490/shard%2F1012
|
384
416
|
- spec/dummy/tmp/cache/375/4C0/shard%2F2003
|
385
417
|
- spec/dummy/tmp/cache/375/510/shard%2F1400
|
418
|
+
- spec/dummy/tmp/cache/375/530/shard%2F3200
|
386
419
|
- spec/dummy/tmp/cache/376/4E0/shard%2F1041
|
387
420
|
- spec/dummy/tmp/cache/376/4E0/shard%2F1203
|
388
421
|
- spec/dummy/tmp/cache/376/4F0/shard%2F1212
|
@@ -449,6 +482,7 @@ files:
|
|
449
482
|
- spec/dummy/tmp/cache/37A/580/shard%2F1261
|
450
483
|
- spec/dummy/tmp/cache/37A/580/shard%2F3043
|
451
484
|
- spec/dummy/tmp/cache/37A/590/shard%2F3052
|
485
|
+
- spec/dummy/tmp/cache/37A/590/shard%2F3214
|
452
486
|
- spec/dummy/tmp/cache/37A/5A0/shard%2F3061
|
453
487
|
- spec/dummy/tmp/cache/37A/5B0/shard%2F3070
|
454
488
|
- spec/dummy/tmp/cache/37A/5C0/shard%2F1702
|
@@ -543,6 +577,7 @@ files:
|
|
543
577
|
- spec/dummy/tmp/cache/37E/610/shard%2F2606
|
544
578
|
- spec/dummy/tmp/cache/37E/620/shard%2F1805
|
545
579
|
- spec/dummy/tmp/cache/37E/620/shard%2F2615
|
580
|
+
- spec/dummy/tmp/cache/37E/620/shard%2F3182
|
546
581
|
- spec/dummy/tmp/cache/37E/630/shard%2F2624
|
547
582
|
- spec/dummy/tmp/cache/37E/630/shard%2F2705
|
548
583
|
- spec/dummy/tmp/cache/37E/640/shard%2F1661
|
@@ -614,6 +649,7 @@ files:
|
|
614
649
|
- spec/dummy/tmp/cache/381/640/shard%2F2609
|
615
650
|
- spec/dummy/tmp/cache/381/640/shard%2F3095
|
616
651
|
- spec/dummy/tmp/cache/381/650/shard%2F1565
|
652
|
+
- spec/dummy/tmp/cache/381/650/shard%2F3185
|
617
653
|
- spec/dummy/tmp/cache/381/660/shard%2F1493
|
618
654
|
- spec/dummy/tmp/cache/381/660/shard%2F2627
|
619
655
|
- spec/dummy/tmp/cache/381/670/shard%2F1745
|
@@ -637,6 +673,7 @@ files:
|
|
637
673
|
- spec/dummy/tmp/cache/382/640/shard%2F2196
|
638
674
|
- spec/dummy/tmp/cache/382/650/shard%2F1557
|
639
675
|
- spec/dummy/tmp/cache/382/650/shard%2F3096
|
676
|
+
- spec/dummy/tmp/cache/382/650/shard%2F3177
|
640
677
|
- spec/dummy/tmp/cache/382/660/shard%2F2376
|
641
678
|
- spec/dummy/tmp/cache/382/670/shard%2F2628
|
642
679
|
- spec/dummy/tmp/cache/382/690/shard%2F1674
|
@@ -681,6 +718,7 @@ files:
|
|
681
718
|
- spec/dummy/tmp/cache/385/6F0/shard%2F2595
|
682
719
|
- spec/dummy/tmp/cache/385/710/shard%2F2694
|
683
720
|
- spec/dummy/tmp/cache/386/690/shard%2F1399
|
721
|
+
- spec/dummy/tmp/cache/386/6B0/shard%2F3199
|
684
722
|
- spec/dummy/tmp/cache/386/6C0/shard%2F2479
|
685
723
|
- spec/dummy/tmp/cache/386/6D0/shard%2F1759
|
686
724
|
- spec/dummy/tmp/cache/386/6F0/shard%2F1858
|
@@ -700,6 +738,7 @@ files:
|
|
700
738
|
- spec/dummy/tmp/cache/3A5/ED0/shard%2F10031
|
701
739
|
- spec/dummy/tmp/cache/3A6/EB0/shard%2F10005
|
702
740
|
- spec/dummy/tmp/cache/3A6/ED0/shard%2F10104
|
741
|
+
- spec/dummy/tmp/cache/3A6/F80/shard%2F13200
|
703
742
|
- spec/dummy/tmp/cache/3A7/EC0/shard%2F10006
|
704
743
|
- spec/dummy/tmp/cache/3A7/F10/shard%2F10051
|
705
744
|
- spec/dummy/tmp/cache/3A8/F50/shard%2F10322
|
@@ -752,6 +791,7 @@ files:
|
|
752
791
|
- spec/dummy/tmp/cache/3B0/010/shard%2F12229
|
753
792
|
- spec/dummy/tmp/cache/3B0/040/shard%2F10636
|
754
793
|
- spec/dummy/tmp/cache/3B0/060/shard%2F11626
|
794
|
+
- spec/dummy/tmp/cache/3B0/080/shard%2F13183
|
755
795
|
- spec/dummy/tmp/cache/3B0/0A0/shard%2F12634
|
756
796
|
- spec/dummy/tmp/cache/3B0/0B0/shard%2F10942
|
757
797
|
- spec/dummy/tmp/cache/3B0/FC0/shard%2F10159
|
@@ -760,6 +800,7 @@ files:
|
|
760
800
|
- spec/dummy/tmp/cache/3B1/050/shard%2F11609
|
761
801
|
- spec/dummy/tmp/cache/3B1/070/shard%2F10574
|
762
802
|
- spec/dummy/tmp/cache/3B1/070/shard%2F11465
|
803
|
+
- spec/dummy/tmp/cache/3B1/070/shard%2F13166
|
763
804
|
- spec/dummy/tmp/cache/3B1/090/shard%2F12536
|
764
805
|
- spec/dummy/tmp/cache/3B1/0A0/shard%2F11492
|
765
806
|
- spec/dummy/tmp/cache/3B1/0A0/shard%2F11654
|
@@ -1212,6 +1253,7 @@ test_files:
|
|
1212
1253
|
- spec/dummy/tmp/cache/374/490/shard%2F1012
|
1213
1254
|
- spec/dummy/tmp/cache/375/4C0/shard%2F2003
|
1214
1255
|
- spec/dummy/tmp/cache/375/510/shard%2F1400
|
1256
|
+
- spec/dummy/tmp/cache/375/530/shard%2F3200
|
1215
1257
|
- spec/dummy/tmp/cache/376/4E0/shard%2F1041
|
1216
1258
|
- spec/dummy/tmp/cache/376/4E0/shard%2F1203
|
1217
1259
|
- spec/dummy/tmp/cache/376/4F0/shard%2F1212
|
@@ -1278,6 +1320,7 @@ test_files:
|
|
1278
1320
|
- spec/dummy/tmp/cache/37A/580/shard%2F1261
|
1279
1321
|
- spec/dummy/tmp/cache/37A/580/shard%2F3043
|
1280
1322
|
- spec/dummy/tmp/cache/37A/590/shard%2F3052
|
1323
|
+
- spec/dummy/tmp/cache/37A/590/shard%2F3214
|
1281
1324
|
- spec/dummy/tmp/cache/37A/5A0/shard%2F3061
|
1282
1325
|
- spec/dummy/tmp/cache/37A/5B0/shard%2F3070
|
1283
1326
|
- spec/dummy/tmp/cache/37A/5C0/shard%2F1702
|
@@ -1372,6 +1415,7 @@ test_files:
|
|
1372
1415
|
- spec/dummy/tmp/cache/37E/610/shard%2F2606
|
1373
1416
|
- spec/dummy/tmp/cache/37E/620/shard%2F1805
|
1374
1417
|
- spec/dummy/tmp/cache/37E/620/shard%2F2615
|
1418
|
+
- spec/dummy/tmp/cache/37E/620/shard%2F3182
|
1375
1419
|
- spec/dummy/tmp/cache/37E/630/shard%2F2624
|
1376
1420
|
- spec/dummy/tmp/cache/37E/630/shard%2F2705
|
1377
1421
|
- spec/dummy/tmp/cache/37E/640/shard%2F1661
|
@@ -1443,6 +1487,7 @@ test_files:
|
|
1443
1487
|
- spec/dummy/tmp/cache/381/640/shard%2F2609
|
1444
1488
|
- spec/dummy/tmp/cache/381/640/shard%2F3095
|
1445
1489
|
- spec/dummy/tmp/cache/381/650/shard%2F1565
|
1490
|
+
- spec/dummy/tmp/cache/381/650/shard%2F3185
|
1446
1491
|
- spec/dummy/tmp/cache/381/660/shard%2F1493
|
1447
1492
|
- spec/dummy/tmp/cache/381/660/shard%2F2627
|
1448
1493
|
- spec/dummy/tmp/cache/381/670/shard%2F1745
|
@@ -1466,6 +1511,7 @@ test_files:
|
|
1466
1511
|
- spec/dummy/tmp/cache/382/640/shard%2F2196
|
1467
1512
|
- spec/dummy/tmp/cache/382/650/shard%2F1557
|
1468
1513
|
- spec/dummy/tmp/cache/382/650/shard%2F3096
|
1514
|
+
- spec/dummy/tmp/cache/382/650/shard%2F3177
|
1469
1515
|
- spec/dummy/tmp/cache/382/660/shard%2F2376
|
1470
1516
|
- spec/dummy/tmp/cache/382/670/shard%2F2628
|
1471
1517
|
- spec/dummy/tmp/cache/382/690/shard%2F1674
|
@@ -1510,6 +1556,7 @@ test_files:
|
|
1510
1556
|
- spec/dummy/tmp/cache/385/6F0/shard%2F2595
|
1511
1557
|
- spec/dummy/tmp/cache/385/710/shard%2F2694
|
1512
1558
|
- spec/dummy/tmp/cache/386/690/shard%2F1399
|
1559
|
+
- spec/dummy/tmp/cache/386/6B0/shard%2F3199
|
1513
1560
|
- spec/dummy/tmp/cache/386/6C0/shard%2F2479
|
1514
1561
|
- spec/dummy/tmp/cache/386/6D0/shard%2F1759
|
1515
1562
|
- spec/dummy/tmp/cache/386/6F0/shard%2F1858
|
@@ -1529,6 +1576,7 @@ test_files:
|
|
1529
1576
|
- spec/dummy/tmp/cache/3A5/ED0/shard%2F10031
|
1530
1577
|
- spec/dummy/tmp/cache/3A6/EB0/shard%2F10005
|
1531
1578
|
- spec/dummy/tmp/cache/3A6/ED0/shard%2F10104
|
1579
|
+
- spec/dummy/tmp/cache/3A6/F80/shard%2F13200
|
1532
1580
|
- spec/dummy/tmp/cache/3A7/EC0/shard%2F10006
|
1533
1581
|
- spec/dummy/tmp/cache/3A7/F10/shard%2F10051
|
1534
1582
|
- spec/dummy/tmp/cache/3A8/F50/shard%2F10322
|
@@ -1581,6 +1629,7 @@ test_files:
|
|
1581
1629
|
- spec/dummy/tmp/cache/3B0/010/shard%2F12229
|
1582
1630
|
- spec/dummy/tmp/cache/3B0/040/shard%2F10636
|
1583
1631
|
- spec/dummy/tmp/cache/3B0/060/shard%2F11626
|
1632
|
+
- spec/dummy/tmp/cache/3B0/080/shard%2F13183
|
1584
1633
|
- spec/dummy/tmp/cache/3B0/0A0/shard%2F12634
|
1585
1634
|
- spec/dummy/tmp/cache/3B0/0B0/shard%2F10942
|
1586
1635
|
- spec/dummy/tmp/cache/3B0/FC0/shard%2F10159
|
@@ -1589,6 +1638,7 @@ test_files:
|
|
1589
1638
|
- spec/dummy/tmp/cache/3B1/050/shard%2F11609
|
1590
1639
|
- spec/dummy/tmp/cache/3B1/070/shard%2F10574
|
1591
1640
|
- spec/dummy/tmp/cache/3B1/070/shard%2F11465
|
1641
|
+
- spec/dummy/tmp/cache/3B1/070/shard%2F13166
|
1592
1642
|
- spec/dummy/tmp/cache/3B1/090/shard%2F12536
|
1593
1643
|
- spec/dummy/tmp/cache/3B1/0A0/shard%2F11492
|
1594
1644
|
- spec/dummy/tmp/cache/3B1/0A0/shard%2F11654
|