summaryrefslogtreecommitdiff
path: root/config/initializers/gitlab_experiment.rb
blob: 055979bb66bdeb761ee202d68dd3d9cd9574fbc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# frozen_string_literal: true

Gitlab::Experiment.configure do |config|
  config.base_class = 'ApplicationExperiment'
  config.cache = Gitlab::Experiment::Cache::RedisHashStore.new(
    pool: ->(&block) { Gitlab::Redis::SharedState.with { |redis| block.call(redis) } }
  )

  # TODO: This will be deprecated as of v0.6.0, but needs to stay intact for
  #  actively running experiments until a versioning concept is put in place to
  #  enable migrating into the new SHA2 strategy.
  config.context_hash_strategy = lambda do |source, seed|
    source = source.keys + source.values if source.is_a?(Hash)
    data = Array(source).map { |v| (v.respond_to?(:to_global_id) ? v.to_global_id : v).to_s }
    Digest::MD5.hexdigest(data.unshift(seed).join('|'))
  end
end