Module: SplitBuilder
- Defined in:
- lib/split-builder.rb,
lib/builder/errors.rb,
lib/builder/metric.rb,
lib/builder/schema.rb,
lib/builder/version.rb,
lib/builder/experiment.rb
Defined Under Namespace
Classes: BuilderError, Experiment, ExperimentAlreadyHasMetricError, Metric, MetricAlreadyDefinedError, Schema, UndefinedGoalError
Constant Summary collapse
- VERSION =
"0.0.1".freeze
Class Method Summary collapse
- .dump_alternatives(alternatives) ⇒ Object
-
.dump_experiments(schema) ⇒ Object
Given a SplitBuilder::Schema, get an experiments hash formatted for Split gem.
-
.dump_goals(metric_goals, schema_goals) ⇒ Object
Private.
Class Method Details
.dump_alternatives(alternatives) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/split-builder.rb', line 31 def dump_alternatives(alternatives) alternatives.map do || { :name => .fetch(:name).to_s, :percent => .fetch(:percent, 50) } end end |
.dump_experiments(schema) ⇒ Object
Given a SplitBuilder::Schema, get an experiments hash formatted for Split gem.
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/split-builder.rb', line 6 def dump_experiments(schema) schema.experiments.each_with_object({}) do |experiment, experiments| metric = schema.get_metric_by_name(experiment.metric_name) experiments[experiment.name.to_s] = { :metric => metric.name, :goals => dump_goals(metric.goals, schema.goals), :alternatives => dump_alternatives(experiment.alternatives), :resettable => false # TODO: Pull from a default config. } end end |
.dump_goals(metric_goals, schema_goals) ⇒ Object
Private
21 22 23 24 25 26 27 28 29 |
# File 'lib/split-builder.rb', line 21 def dump_goals(metric_goals, schema_goals) undefined_goals = metric_goals - schema_goals if undefined_goals.any? raise UndefinedGoalError, "Goals #{undefined_goals.inspect} must be present in schema's defined goals: #{schema_goals.inspect}" end metric_goals.map(&:to_s) end |