ablab 0.4.0 → 0.4.1
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 +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
|