ablab 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ablab.rb +4 -32
- data/lib/ablab/version.rb +1 -1
- data/spec/ablab_spec.rb +1 -49
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 286428614a6e48db6263c90b9d93e6b21f135d1d
|
4
|
+
data.tar.gz: e09c47ce77cd92c10e795f104fdd4b8396711438
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd4c37fd7af9a3ca1296bb22b54566e0e9b13e76e50e3eb04d07a9621e9d37e25cbcccbd548b8f27ec90493d2ebd326312072746c197be99886332fe54461f6b
|
7
|
+
data.tar.gz: 9d04f20ea5dd676cd71a07aed0cb76648fa1a38ff84407d89b8d91e191daa96df569911f4f3e447cfe7db884cd948cc7c81ad598d31944a35ae7c436e22c72b8
|
data/lib/ablab.rb
CHANGED
@@ -76,7 +76,7 @@ module Ablab
|
|
76
76
|
|
77
77
|
def initialize(name, &block)
|
78
78
|
@name = name.to_sym
|
79
|
-
@control = Group.control
|
79
|
+
@control = Group.new(:control, 'control group')
|
80
80
|
@groups = [@control]
|
81
81
|
@callbacks = []
|
82
82
|
instance_exec(&block)
|
@@ -147,7 +147,7 @@ module Ablab
|
|
147
147
|
t += group.weight / tot_weight
|
148
148
|
break group if d < t
|
149
149
|
t
|
150
|
-
end
|
150
|
+
end.try(:name)
|
151
151
|
end
|
152
152
|
|
153
153
|
def draw
|
@@ -171,7 +171,7 @@ module Ablab
|
|
171
171
|
return nil unless request && request.respond_to?(:params)
|
172
172
|
groups = parse_groups(request.params[:ablab_group])
|
173
173
|
group = groups[experiment.name.to_s]
|
174
|
-
experiment.groups.
|
174
|
+
group.to_sym if group && experiment.groups.map { |g| g.name.to_s }.include?(group)
|
175
175
|
end
|
176
176
|
|
177
177
|
private def parse_groups(str)
|
@@ -202,39 +202,11 @@ module Ablab
|
|
202
202
|
|
203
203
|
class Group
|
204
204
|
attr_reader :name, :description, :weight
|
205
|
-
|
205
|
+
|
206
206
|
def initialize(name, description = nil, weight = nil)
|
207
207
|
@name, @description = name.to_sym, description
|
208
208
|
@weight = weight || 1
|
209
209
|
end
|
210
|
-
|
211
|
-
def control?
|
212
|
-
name == :control
|
213
|
-
end
|
214
|
-
|
215
|
-
def experimental?
|
216
|
-
!control?
|
217
|
-
end
|
218
|
-
|
219
|
-
def ==(o)
|
220
|
-
if o.is_a?(Symbol)
|
221
|
-
name == o
|
222
|
-
elsif o.is_a?(String)
|
223
|
-
name.to_s == o
|
224
|
-
elsif o.is_a?(self.class)
|
225
|
-
name == o.name && description == o.description
|
226
|
-
else
|
227
|
-
false
|
228
|
-
end
|
229
|
-
end
|
230
|
-
|
231
|
-
def hash
|
232
|
-
name.hash
|
233
|
-
end
|
234
|
-
|
235
|
-
def self.control
|
236
|
-
new(:control, 'control group')
|
237
|
-
end
|
238
210
|
end
|
239
211
|
|
240
212
|
class Result
|
data/lib/ablab/version.rb
CHANGED
data/spec/ablab_spec.rb
CHANGED
@@ -248,14 +248,13 @@ describe Ablab do
|
|
248
248
|
|
249
249
|
describe "#group" do
|
250
250
|
it "returns one of the groups" do
|
251
|
-
expect(
|
251
|
+
expect(Ablab::Run.new(experiment, rand(12345).to_s, request).group).to be_in([:a, :b, :control])
|
252
252
|
end
|
253
253
|
|
254
254
|
it "returns the forced group, if set with the 'ablab_group' param" do
|
255
255
|
params = { ablab_group: 'bar:baz,foo:a' }
|
256
256
|
allow(request).to receive(:params).and_return(params)
|
257
257
|
run = Ablab::Run.new(experiment, '6q5wed', request)
|
258
|
-
expect(run.group).to be_a(Ablab::Group)
|
259
258
|
expect(run.group).to eq(:a)
|
260
259
|
end
|
261
260
|
end
|
@@ -358,51 +357,4 @@ describe Ablab do
|
|
358
357
|
end
|
359
358
|
end
|
360
359
|
end
|
361
|
-
|
362
|
-
describe Ablab::Group do
|
363
|
-
let(:control_group) { Ablab::Group.new(:control, "control group") }
|
364
|
-
let(:experimental_group) { Ablab::Group.new(:foo, "foo group") }
|
365
|
-
|
366
|
-
describe "#control?" do
|
367
|
-
it 'is true for the control group' do
|
368
|
-
expect(control_group.control?).to be true
|
369
|
-
end
|
370
|
-
|
371
|
-
it 'is false for other groups' do
|
372
|
-
expect(experimental_group.control?).to be false
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
describe "#experimental?" do
|
377
|
-
it 'is false for the control group' do
|
378
|
-
expect(control_group.experimental?).to be false
|
379
|
-
end
|
380
|
-
|
381
|
-
it 'is true for other groups' do
|
382
|
-
expect(experimental_group.experimental?).to be true
|
383
|
-
end
|
384
|
-
end
|
385
|
-
|
386
|
-
describe "#==" do
|
387
|
-
it 'accepts comparison to Symbol instances' do
|
388
|
-
expect(control_group).to eq(:control)
|
389
|
-
expect(control_group).not_to eq(:foo)
|
390
|
-
end
|
391
|
-
|
392
|
-
it 'accepts comparison to String instances' do
|
393
|
-
expect(control_group).to eq('control')
|
394
|
-
expect(control_group).not_to eq('foo')
|
395
|
-
end
|
396
|
-
|
397
|
-
it 'accepts comparison to Ablab::Group instances' do
|
398
|
-
expect(control_group).to eq(control_group)
|
399
|
-
expect(control_group).to eq(Ablab::Group.new(:control, "control group"))
|
400
|
-
expect(control_group).not_to eq(experimental_group)
|
401
|
-
end
|
402
|
-
|
403
|
-
it 'is false for everyhing else' do
|
404
|
-
expect(control_group).not_to eq(Object.new)
|
405
|
-
end
|
406
|
-
end
|
407
|
-
end
|
408
360
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ablab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Ongaro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|