Module: RailsOnboarding::Configuration::Milestones

Included in:
RailsOnboarding::Configuration
Defined in:
lib/rails_onboarding/configuration/milestones.rb

Overview

Milestone configuration, lookups, and trigger matching.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#enable_milestonesObject



5
6
7
# File 'lib/rails_onboarding/configuration/milestones.rb', line 5

def enable_milestones
  tenant_override(:enable_milestones, @enable_milestones)
end

Instance Method Details

#milestone_by_key(key) ⇒ Object



21
22
23
24
25
26
# File 'lib/rails_onboarding/configuration/milestones.rb', line 21

def milestone_by_key(key)
  return nil if key.nil?

  @milestone_by_key_cache ||= {}
  @milestone_by_key_cache[key.to_sym] ||= milestones.find { |m| m[:key].to_sym == key.to_sym }
end

#milestonesObject



11
12
13
# File 'lib/rails_onboarding/configuration/milestones.rb', line 11

def milestones
  tenant_override(:milestones, @milestones)
end

#milestones=(value) ⇒ Object

Override setter to clear cache when configuration changes



16
17
18
19
# File 'lib/rails_onboarding/configuration/milestones.rb', line 16

def milestones=(value)
  clear_cache!
  @milestones = value
end

#milestones_for_trigger(trigger, conditions = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rails_onboarding/configuration/milestones.rb', line 28

def milestones_for_trigger(trigger, conditions = {})
  cache_key = [ trigger, conditions ].hash
  @milestones_for_trigger_cache ||= {}
  @milestones_for_trigger_cache[cache_key] ||= milestones.select do |milestone|
    # Match on trigger
    next false unless milestone[:trigger] == trigger.to_sym

    # If no conditions are provided, match all milestones with this trigger
    next true if conditions.empty?

    # If milestone has no conditions, but we're providing conditions, don't match
    next false if milestone[:conditions].nil?

    # Both have conditions, check if they match
    conditions_match?(milestone[:conditions], conditions)
  end
end