class Vanity::Adapters::MockAdapter
Mock adapter. You can use this when running in test environment, staging, wherever you don't care for collecting metrics. Doesn't store anything.
@since 1.4.0
Public Class Methods
new(options)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 17 def initialize(options) @metrics = @@metrics ||= {} @experiments = @@experiments ||= {} end
Public Instance Methods
ab_add_conversion(experiment, alternative, identity, count = 1, implicit = false)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 156 def ab_add_conversion(experiment, alternative, identity, count = 1, implicit = false) alt = alternative(experiment, alternative) alt[:participants] ||= Set.new alt[:converted] ||= Set.new alt[:conversions] ||= 0 if implicit alt[:participants] << identity else participating = alt[:participants].include?(identity) end alt[:converted] << identity if implicit || participating alt[:conversions] += count end
ab_add_participant(experiment, alternative, identity)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 134 def ab_add_participant(experiment, alternative, identity) alt = alternative(experiment, alternative) alt[:participants] ||= Set.new alt[:participants] << identity end
ab_assigned(experiment, identity)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 148 def ab_assigned(experiment, identity) alternatives_for(experiment).each do |alt_id, alt_state| return alt_id if alt_state[:participants].include?(identity) end nil end
ab_counts(experiment, alternative)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 113 def ab_counts(experiment, alternative) alt = alternative(experiment, alternative) { :participants => alt[:participants] ? alt[:participants].size : 0, :converted => alt[:converted] ? alt[:converted].size : 0, :conversions => alt[:conversions] || 0 } end
ab_get_outcome(experiment)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 170 def ab_get_outcome(experiment) @experiments[experiment] ||= {} @experiments[experiment][:outcome] end
ab_not_showing(experiment, identity)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 130 def ab_not_showing(experiment, identity) @experiments[experiment][:showing].delete identity if @experiments[experiment] && @experiments[experiment][:showing] end
ab_seen(experiment, identity, alternative_or_id)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 140 def ab_seen(experiment, identity, alternative_or_id) with_ab_seen_deprecation(experiment, identity, alternative_or_id) do |expt, ident, alt_id| if ab_assigned(expt, ident) == alt_id alt_id end end end
ab_set_outcome(experiment, alternative = 0)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 175 def ab_set_outcome(experiment, alternative = 0) @experiments[experiment] ||= {} @experiments[experiment][:outcome] = alternative end
ab_show(experiment, identity, alternative)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 120 def ab_show(experiment, identity, alternative) @experiments[experiment] ||= {} @experiments[experiment][:showing] ||= {} @experiments[experiment][:showing][identity] = alternative end
ab_showing(experiment, identity)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 126 def ab_showing(experiment, identity) @experiments[experiment] && @experiments[experiment][:showing] && @experiments[experiment][:showing][identity] end
active?()
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 22 def active? !!@metrics end
destroy_experiment(experiment)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 180 def destroy_experiment(experiment) @experiments.delete experiment end
destroy_metric(metric)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 66 def destroy_metric(metric) @metrics.delete metric end
disconnect!()
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 26 def disconnect! @metrics = nil @experiments = nil end
experiment_persisted?(experiment)
click to toggle source
– Experiments –
# File lib/vanity/adapters/mock_adapter.rb, line 73 def experiment_persisted?(experiment) !!@experiments[experiment] end
flushdb()
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 40 def flushdb @metrics.clear @experiments.clear end
get_experiment_completed_at(experiment)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 91 def get_experiment_completed_at(experiment) @experiments[experiment] && @experiments[experiment][:completed_at] end
get_experiment_created_at(experiment)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 82 def get_experiment_created_at(experiment) @experiments[experiment] && @experiments[experiment][:created_at] end
get_metric_last_update_at(metric)
click to toggle source
– Metrics –
# File lib/vanity/adapters/mock_adapter.rb, line 48 def get_metric_last_update_at(metric) @metrics[metric] && @metrics[metric][:last_update_at] end
is_experiment_completed?(experiment)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 95 def is_experiment_completed?(experiment) @experiments[experiment] && @experiments[experiment][:completed_at] end
is_experiment_enabled?(experiment)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 104 def is_experiment_enabled?(experiment) record = @experiments[experiment] if Vanity.configuration.experiments_start_enabled record == nil || record[:enabled] != false else record && record[:enabled] == true end end
metric_track(metric, timestamp, identity, values)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 52 def metric_track(metric, timestamp, identity, values) @metrics[metric] ||= {} current = @metrics[metric][timestamp.to_date] ||= [] values.each_with_index do |v,i| current[i] = (current[i] || 0) + v || 0 end @metrics[metric][:last_update_at] = Time.now end
metric_values(metric, from, to)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 61 def metric_values(metric, from, to) hash = @metrics[metric] || {} (from.to_date..to.to_date).map { |date| hash[date] || [] } end
reconnect!()
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 31 def reconnect! @metrics = @@metrics @experiments = @@experiments end
set_experiment_completed_at(experiment, time)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 86 def set_experiment_completed_at(experiment, time) @experiments[experiment] ||= {} @experiments[experiment][:completed_at] ||= time end
set_experiment_created_at(experiment, time)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 77 def set_experiment_created_at(experiment, time) @experiments[experiment] ||= {} @experiments[experiment][:created_at] ||= time end
set_experiment_enabled(experiment, enabled)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 99 def set_experiment_enabled(experiment, enabled) @experiments[experiment] ||= {} @experiments[experiment][:enabled] = enabled end
to_s()
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 36 def to_s "mock:/" end
Private Instance Methods
alternative(experiment, alternative)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 186 def alternative(experiment, alternative) alternatives_for(experiment)[alternative] ||= {} alternatives_for(experiment)[alternative] end
alternatives_for(experiment)
click to toggle source
# File lib/vanity/adapters/mock_adapter.rb, line 191 def alternatives_for(experiment) @experiments[experiment] ||= {} @experiments[experiment][:alternatives] ||= {} @experiments[experiment][:alternatives] end