class Fabrication::Schematic::Manager
Public Instance Methods
Source
# File lib/fabrication/schematic/manager.rb, line 39 def [](name) schematics[name.to_sym] end
Source
# File lib/fabrication/schematic/manager.rb, line 47 def build_stack @build_stack ||= [] end
Source
# File lib/fabrication/schematic/manager.rb, line 43 def create_stack @create_stack ||= [] end
Source
# File lib/fabrication/schematic/manager.rb, line 25 def empty? schematics.empty? end
Source
# File lib/fabrication/schematic/manager.rb, line 29 def freeze @initializing = false end
Source
# File lib/fabrication/schematic/manager.rb, line 13 def initializing? @initializing ||= nil end
Source
# File lib/fabrication/schematic/manager.rb, line 55 def load_definitions preinitialize Fabrication::Config.path_prefixes.each do |prefix| Fabrication::Config.fabricator_paths.each do |path| if File.file?(path) load path else Dir.glob(File.join(prefix.to_s, path, '**', '*.rb')).each do |file| load file end end end end ensure freeze end
Source
# File lib/fabrication/schematic/manager.rb, line 8 def preinitialize @initializing = true clear end
Source
# File lib/fabrication/schematic/manager.rb, line 72 def prevent_recursion! (create_stack + build_stack + to_params_stack).group_by(&:to_sym).each do |name, values| raise Fabrication::InfiniteRecursionError, name if values.length > Fabrication::Config.recursion_limit end end
Source
# File lib/fabrication/schematic/manager.rb, line 33 def register(name, options, &) name = name.to_sym raise_if_registered(name) store(name, Array(options.delete(:aliases)), options, &) end
Source
# File lib/fabrication/schematic/manager.rb, line 17 def schematics @schematics ||= {} end
Source
# File lib/fabrication/schematic/manager.rb, line 51 def to_params_stack @to_params_stack ||= [] end
Protected Instance Methods
Source
# File lib/fabrication/schematic/manager.rb, line 80 def raise_if_registered(name) (raise Fabrication::DuplicateFabricatorError, name) if self[name] end
Source
# File lib/fabrication/schematic/manager.rb, line 84 def store(name, aliases, options, &) schematic = schematics[name] = Fabrication::Schematic::Definition.new(name, options, &) aliases.each { |as| schematics[as.to_sym] = schematic } end