class Hackle::Workspace
Public Class Methods
create(data:)
click to toggle source
# File lib/hackle/workspaces/workspace.rb, line 36 def create(data:) buckets = Hash[data[:buckets].map { |b| [b[:id], bucket(b)] }] running_experiments = Hash[data[:experiments].map { |re| [re[:key], running_experiment(re, buckets)] }] completed_experiment = Hash[data[:completedExperiments].map { |ce| [ce[:experimentKey], completed_experiment(ce)] }] event_types = Hash[data[:events].map { |e| [e[:key], event_type(e)] }] experiments = running_experiments.merge(completed_experiment) Workspace.new( experiments: experiments, event_types: event_types ) end
new(experiments:, event_types:)
click to toggle source
@param experiments [Hash{Integer => Experiment}] @param event_types [Hash{String => EventType}]
# File lib/hackle/workspaces/workspace.rb, line 6 def initialize(experiments:, event_types:) # @type [Hash{Integer => Experiment}] @experiments = experiments # @type [Hash{String => EventType}] @event_types = event_types end
Private Class Methods
bucket(data)
click to toggle source
# File lib/hackle/workspaces/workspace.rb, line 76 def bucket(data) Bucket.new( seed: data[:seed], slot_size: data[:slotSize], slots: data[:slots].map { |s| slot(s) } ) end
completed_experiment(data)
click to toggle source
# File lib/hackle/workspaces/workspace.rb, line 60 def completed_experiment(data) Experiment::Completed.new( id: data[:experimentId], key: data[:experimentKey], winner_variation_key: data[:winnerVariationKey] ) end
event_type(data)
click to toggle source
# File lib/hackle/workspaces/workspace.rb, line 92 def event_type(data) EventType.new( id: data[:id], key: data[:key] ) end
running_experiment(data, buckets)
click to toggle source
# File lib/hackle/workspaces/workspace.rb, line 50 def running_experiment(data, buckets) Experiment::Running.new( id: data[:id], key: data[:key], bucket: buckets[data[:bucketId]], variations: Hash[data[:variations].map { |v| [v[:id], variation(v)] }], overrides: Hash[data[:execution][:userOverrides].map { |u| [u[:userId], u[:variationId]] }] ) end
slot(data)
click to toggle source
# File lib/hackle/workspaces/workspace.rb, line 84 def slot(data) Slot.new( start_inclusive: data[:startInclusive], end_exclusive: data[:endExclusive], variation_id: data[:variationId] ) end
variation(data)
click to toggle source
# File lib/hackle/workspaces/workspace.rb, line 68 def variation(data) Variation.new( id: data[:id], key: data[:key], dropped: data[:status] == 'DROPPED' ) end
Public Instance Methods
get_event_type(event_type_key:)
click to toggle source
@param event_type_key [String]
@return [EventType]
# File lib/hackle/workspaces/workspace.rb, line 25 def get_event_type(event_type_key:) event_type = @event_types[event_type_key] if event_type.nil? EventType.undefined(key: event_type_key) else event_type end end
get_experiment(experiment_key:)
click to toggle source
@param experiment_key [Integer]
@return [Experiment, nil]
# File lib/hackle/workspaces/workspace.rb, line 18 def get_experiment(experiment_key:) @experiments[experiment_key] end