8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/flipper/expressions/feature_enabled.rb', line 8
def self.call(feature_name, context:)
evaluating = Thread.current[EVALUATING_KEY] ||= Set.new
feature_name = feature_name.to_s
current_feature = context[:feature_name].to_s
added_current = evaluating.add?(current_feature)
begin
return false if evaluating.include?(feature_name)
evaluating.add(feature_name)
actor = context[:actor]
if actor
Flipper.enabled?(feature_name, actor)
else
Flipper.enabled?(feature_name)
end
ensure
evaluating.delete(feature_name)
evaluating.delete(current_feature) if added_current
end
end
|