class FactoryBot::Registry

Attributes

name[R]

Public Class Methods

new(name) click to toggle source
# File lib/factory_bot/registry.rb, line 9
def initialize(name)
  @name = name
  @items = ActiveSupport::HashWithIndifferentAccess.new
end

Public Instance Methods

[](name)
Alias for: find
clear() click to toggle source
# File lib/factory_bot/registry.rb, line 14
def clear
  @items.clear
end
each(&block) click to toggle source
# File lib/factory_bot/registry.rb, line 18
def each(&block)
  @items.values.uniq.each(&block)
end
find(name) click to toggle source
# File lib/factory_bot/registry.rb, line 22
def find(name)
  @items.fetch(name)
rescue KeyError => e
  raise key_error_with_custom_message(e)
end
Also aliased as: []
register(name, item) click to toggle source
# File lib/factory_bot/registry.rb, line 30
def register(name, item)
  @items[name] = item
end
registered?(name) click to toggle source
# File lib/factory_bot/registry.rb, line 34
def registered?(name)
  @items.key?(name)
end

Private Instance Methods

key_error_with_custom_message(key_error) click to toggle source
# File lib/factory_bot/registry.rb, line 40
def key_error_with_custom_message(key_error)
  message = key_error.message.sub("key not found", "#{@name} not registered")
  new_key_error(message, key_error).tap do |error|
    error.set_backtrace(key_error.backtrace)
  end
end
new_key_error(message, key_error) click to toggle source
# File lib/factory_bot/registry.rb, line 50
def new_key_error(message, key_error)
  KeyError.new(message, key: key_error.key, receiver: key_error.receiver)
end