Class: OneApm::Support::RulesEngine
- Inherits:
-
Object
- Object
- OneApm::Support::RulesEngine
show all
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/one_apm/support/rules_engine.rb,
lib/one_apm/support/rules_engine/replacement_rule.rb,
lib/one_apm/support/rules_engine/segment_terms_rule.rb
Defined Under Namespace
Classes: ReplacementRule, SegmentTermsRule
Constant Summary
collapse
- OA_SEGMENT_SEPARATOR =
'/'.freeze
- OA_LEADING_SLASH_REGEX =
%r{^/}.freeze
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(rules = [], segment_term_rules = []) ⇒ RulesEngine
Returns a new instance of RulesEngine.
34
35
36
37
|
# File 'lib/one_apm/support/rules_engine.rb', line 34
def initialize(rules=[], segment_term_rules=[])
@rules = rules.sort
@segment_term_rules = segment_term_rules
end
|
Class Method Details
.create_metric_rules(connect_response) ⇒ Object
18
19
20
21
22
|
# File 'lib/one_apm/support/rules_engine.rb', line 18
def self.create_metric_rules(connect_response)
specs = connect_response['metric_name_rules'] || []
rules = specs.map { |spec| ReplacementRule.new(spec) }
self.new(rules)
end
|
.create_transaction_rules(connect_response) ⇒ Object
24
25
26
27
28
29
30
31
32
|
# File 'lib/one_apm/support/rules_engine.rb', line 24
def self.create_transaction_rules(connect_response)
txn_name_specs = connect_response['transaction_name_rules'] || []
segment_rule_specs = connect_response['transaction_segment_terms'] || []
txn_name_rules = txn_name_specs.map { |s| ReplacementRule.new(s) }
segment_rules = segment_rule_specs.map { |s| SegmentTermsRule.new(s) }
self.new(txn_name_rules, segment_rules)
end
|
Instance Method Details
#apply_rules(rules, string) ⇒ Object
39
40
41
42
43
44
45
46
47
|
# File 'lib/one_apm/support/rules_engine.rb', line 39
def apply_rules(rules, string)
rules.each do |rule|
if rule.matches?(string)
string = rule.apply(string)
break if rule.terminal?
end
end
string
end
|
#rename(original_string) ⇒ Object
49
50
51
52
53
54
|
# File 'lib/one_apm/support/rules_engine.rb', line 49
def rename(original_string)
renamed = apply_rules(@rules, original_string)
return nil unless renamed
renamed = apply_rules(@segment_term_rules, renamed)
renamed
end
|