@@ -80,29 +80,22 @@ def exists?
8080 redis . exists? ( @name )
8181 end
8282
83- def load_alternatives
84- alternatives = redis . lrange ( @name , 0 , -1 )
85- alternatives . map do |alt |
86- alt = begin
87- JSON . parse ( alt )
88- rescue
89- alt
90- end
91- Split ::Alternative . new ( alt , @name )
83+ def load!
84+ raw_config , raw_alternatives , raw_metadata , raw_goals = redis . pipelined do |pipe |
85+ pipe . hgetall ( experiment_config_key )
86+ pipe . lrange ( @name , 0 , -1 )
87+ pipe . get ( metadata_key )
88+ pipe . lrange ( goals_key , 0 , -1 )
9289 end
93- end
94-
95- def load_metadata
96- meta = redis . get ( metadata_key )
97- JSON . parse ( meta ) unless meta . nil?
98- end
99-
100- def load_goals
101- Split ::GoalsCollection . new ( @name ) . load_from_redis
102- end
90+ config = raw_config . transform_keys ( &:to_sym )
10391
104- def load_experiment
105- redis . hgetall ( experiment_config_key ) . transform_keys ( &:to_sym )
92+ {
93+ resettable : config [ :resettable ] ,
94+ algorithm : config [ :algorithm ] ,
95+ alternatives : build_alternatives ( raw_alternatives ) ,
96+ goals : raw_goals ,
97+ metadata : parse_metadata ( raw_metadata )
98+ }
10699 end
107100
108101 def experiment_config_key
@@ -113,10 +106,29 @@ def metadata_key
113106 "#{ name } :metadata"
114107 end
115108
109+ def goals_key
110+ "#{ name } :goals"
111+ end
112+
116113 private
117114 def redis
118115 Split . redis
119116 end
117+
118+ def build_alternatives ( raw_alternatives )
119+ raw_alternatives . map do |alt |
120+ alt = begin
121+ JSON . parse ( alt )
122+ rescue
123+ alt
124+ end
125+ Split ::Alternative . new ( alt , @name )
126+ end
127+ end
128+
129+ def parse_metadata ( raw_metadata )
130+ JSON . parse ( raw_metadata ) unless raw_metadata . nil?
131+ end
120132 end
121133 end
122134end
0 commit comments