Class: GreenFlag::VisitorGroup
- Inherits:
-
Object
- Object
- GreenFlag::VisitorGroup
show all
- Defined in:
- app/models/green_flag/visitor_group.rb
Defined Under Namespace
Classes: MultipleGroupsError
Constant Summary
collapse
- MUTEX =
Mutex.new
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(key, description = nil, &block) ⇒ VisitorGroup
Returns a new instance of VisitorGroup.
46
47
48
49
50
|
# File 'app/models/green_flag/visitor_group.rb', line 46
def initialize(key, description=nil, &block)
self.key = key.to_s
self.description = description
self.evaluator = block
end
|
Instance Attribute Details
#description ⇒ Object
Returns the value of attribute description.
6
7
8
|
# File 'app/models/green_flag/visitor_group.rb', line 6
def description
@description
end
|
#key ⇒ Object
Returns the value of attribute key.
6
7
8
|
# File 'app/models/green_flag/visitor_group.rb', line 6
def key
@key
end
|
Class Method Details
.all ⇒ Object
38
39
40
|
# File 'app/models/green_flag/visitor_group.rb', line 38
def self.all
@groups || []
end
|
.clear! ⇒ Object
34
35
36
|
# File 'app/models/green_flag/visitor_group.rb', line 34
def self.clear!
@groups = []
end
|
.define(&block) ⇒ Object
8
9
10
|
# File 'app/models/green_flag/visitor_group.rb', line 8
def self.define(&block)
instance_eval(&block)
end
|
.for_key(key) ⇒ Object
30
31
32
|
# File 'app/models/green_flag/visitor_group.rb', line 30
def self.for_key(key)
all.find { |g| g.key.to_s == key.to_s }
end
|
.group(key, description = nil, type = GreenFlag::VisitorGroup, &block) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'app/models/green_flag/visitor_group.rb', line 12
def self.group(key, description=nil, type=GreenFlag::VisitorGroup, &block)
new_group = nil
MUTEX.synchronize do
key_exists = for_key(key)
if key_exists
raise MultipleGroupsError.new "Two groups with key :#{key} were defined. Rename one of them!"
end
new_group = type.new(key, description, &block)
@groups ||= []
@groups << new_group
end
new_group
end
|
.keys ⇒ Object
42
43
44
|
# File 'app/models/green_flag/visitor_group.rb', line 42
def self.keys
all.map(&:key)
end
|
.user_group(key, description = nil, &block) ⇒ Object
26
27
28
|
# File 'app/models/green_flag/visitor_group.rb', line 26
def self.user_group(key, description=nil, &block)
group(key, description, GreenFlag::UserGroup, &block)
end
|
Instance Method Details
#includes_visitor?(visitor, rule = nil) ⇒ Boolean
52
53
54
|
# File 'app/models/green_flag/visitor_group.rb', line 52
def includes_visitor?(visitor, rule=nil)
evaluator.call(visitor, rule)
end
|