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
- #milestone_by_key(key) ⇒ Object
- #milestones ⇒ Object
-
#milestones=(value) ⇒ Object
Override setter to clear cache when configuration changes.
- #milestones_for_trigger(trigger, conditions = {}) ⇒ Object
Instance Attribute Details
#enable_milestones ⇒ Object
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 |
#milestones ⇒ Object
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 |