Module: Philiprehberger::FeatureFlag::Targeting

Included in:
Philiprehberger::FeatureFlag
Defined in:
lib/philiprehberger/feature_flag/targeting.rb

Instance Method Summary collapse

Instance Method Details

#disable_for(flag, users:) ⇒ Object



12
13
14
15
16
17
# File 'lib/philiprehberger/feature_flag/targeting.rb', line 12

def disable_for(flag, users:)
  @targets ||= {}
  return unless @targets.key?(flag.to_sym)

  @targets[flag.to_sym] -= users.map(&:to_s)
end

#enable_for(flag, users:) ⇒ Object



6
7
8
9
10
# File 'lib/philiprehberger/feature_flag/targeting.rb', line 6

def enable_for(flag, users:)
  @targets ||= {}
  @targets[flag.to_sym] ||= []
  @targets[flag.to_sym] |= users.map(&:to_s)
end

#reset_targets!Object



29
30
31
# File 'lib/philiprehberger/feature_flag/targeting.rb', line 29

def reset_targets!
  @targets = nil
end

#targeted?(flag, user) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
# File 'lib/philiprehberger/feature_flag/targeting.rb', line 23

def targeted?(flag, user)
  return false if user.nil?

  targeted_users(flag).include?(user.to_s)
end

#targeted_users(flag) ⇒ Object



19
20
21
# File 'lib/philiprehberger/feature_flag/targeting.rb', line 19

def targeted_users(flag)
  @targets&.dig(flag.to_sym) || []
end