module Phaedra::Initializers
Constants
- DEFAULT_PRIORITY
- NotAvailable
- PRIORITY_MAP
- Registration
- Uncallable
Public Class Methods
prioritized_initializers()
click to toggle source
# File lib/phaedra/initializers_module.rb, line 61 def self.prioritized_initializers # sort initializers according to priority and load order grouped_initializers = @registry.group_by(&:priority) grouped_initializers.keys.sort.reverse.map do |priority| grouped_initializers[priority] end.flatten end
priority_value(priority)
click to toggle source
Ensure the priority is a Fixnum
# File lib/phaedra/initializers_module.rb, line 29 def self.priority_value(priority) return priority if priority.is_a?(Integer) PRIORITY_MAP[priority] || DEFAULT_PRIORITY end
register(origin, priority: DEFAULT_PRIORITY, &block)
click to toggle source
# File lib/phaedra/initializers_module.rb, line 35 def self.register(origin, priority: DEFAULT_PRIORITY, &block) raise Uncallable, "Initializers must respond to :call" unless block.respond_to? :call @registry << Registration.new( origin: origin, priority: priority_value(priority), block: block ) block end
remove(origin)
click to toggle source
# File lib/phaedra/initializers_module.rb, line 47 def self.remove(origin) @registry.delete_if { |item| item.origin == origin } end
run(force: false)
click to toggle source
# File lib/phaedra/initializers_module.rb, line 51 def self.run(force: false) if !@initializers_ran || force prioritized_initializers.each do |initializer| initializer.block.call end end @initializers_ran = true end