@@ -8,6 +8,7 @@ class Alternative
88 attr_accessor :name
99 attr_accessor :experiment_name
1010 attr_accessor :weight
11+ attr_accessor :recorded_info
1112
1213 include Zscore
1314
@@ -127,10 +128,37 @@ def z_score(goal = nil)
127128 z_score = Split ::Zscore . calculate ( p_a , n_a , p_c , n_c )
128129 end
129130
131+ def extra_info
132+ data = Split . redis . hget ( key , 'recorded_info' )
133+ if data && data . length > 1
134+ begin
135+ JSON . parse ( data )
136+ rescue
137+ { }
138+ end
139+ else
140+ { }
141+ end
142+ end
143+
144+ def record_extra_info ( k , value = 1 )
145+ @recorded_info = self . extra_info || { }
146+
147+ if value . kind_of? ( Numeric )
148+ @recorded_info [ k ] ||= 0
149+ @recorded_info [ k ] += value
150+ else
151+ @recorded_info [ k ] = value
152+ end
153+
154+ Split . redis . hset key , 'recorded_info' , ( @recorded_info || { } ) . to_json
155+ end
156+
130157 def save
131158 Split . redis . hsetnx key , 'participant_count' , 0
132159 Split . redis . hsetnx key , 'completed_count' , 0
133160 Split . redis . hsetnx key , 'p_winner' , p_winner
161+ Split . redis . hsetnx key , 'recorded_info' , ( @recorded_info || { } ) . to_json
134162 end
135163
136164 def validate!
@@ -140,7 +168,7 @@ def validate!
140168 end
141169
142170 def reset
143- Split . redis . hmset key , 'participant_count' , 0 , 'completed_count' , 0
171+ Split . redis . hmset key , 'participant_count' , 0 , 'completed_count' , 0 , 'recorded_info' , nil
144172 unless goals . empty?
145173 goals . each do |g |
146174 field = "completed_count:#{ g } "
0 commit comments