summaryrefslogtreecommitdiff
path: root/lib/feature_flag_client.rb
blob: f71252b0d798740f0f3947c5d810a53488d3ebd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# frozen_string_literal: true

class FeatureFlagClient
  def self.enabled?(key, user: nil, thing: nil, default_enabled: false)
    if Feature.enabled?(:gitlab_feature_flag_client) && client
      key_string = key.to_s
      unleash_context = Unleash::Context.new
      unleash_context.user_id = user.email if user

      client.is_enabled?(key_string, unleash_context)
    else
      Feature.enabled?(key, thing, default_enabled: default_enabled)
    end
  end

  private

  def self.client
    server_url = ENV['GITLAB_FEATURE_FLAG_SERVER_URL']
    instance_id = ENV['GITLAB_FEATURE_FLAG_INSTANCE_ID']

    if server_url && instance_id
      @client ||= Unleash::Client.new(
        url: server_url,
        instance_id: instance_id,
        app_name: Rails.env
      )
    end
  end
end