Class: PreloadedDataHash

Inherits:
Object show all
Defined in:
lib/factory_data_preloader/preloaded_data_hash.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(preloader) ⇒ PreloadedDataHash

Returns a new instance of PreloadedDataHash.



4
5
6
# File 'lib/factory_data_preloader/preloaded_data_hash.rb', line 4

def initialize(preloader)
  @preloader, @backing_hash = preloader, {}
end

Instance Attribute Details

#preloaderObject (readonly)

Returns the value of attribute preloader.



2
3
4
# File 'lib/factory_data_preloader/preloaded_data_hash.rb', line 2

def preloader
  @preloader
end

Instance Method Details

#[](key) ⇒ Object



13
14
15
# File 'lib/factory_data_preloader/preloaded_data_hash.rb', line 13

def [](key)
  @backing_hash[key]
end

#[]=(key, record) ⇒ Object



8
9
10
11
# File 'lib/factory_data_preloader/preloaded_data_hash.rb', line 8

def []=(key, record)
  puts "DEPRECATION WARNING: Instead of 'data[:#{key}] = record' please use 'data.add(:#{key}) { record }'"
  add_to_backing_hash(key, record)
end

#add(key) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/factory_data_preloader/preloaded_data_hash.rb', line 21

def add(key)
  raise "You must pass a block to PreloaderDataHash#add.  You forgot to use the block in your #{preloader.model_type} prelodaer for the #{key.inspect} record." unless block_given?
  begin
    add_to_backing_hash(key, yield)
  rescue => e
    puts "WARNING: an error occurred while preloading the #{preloader.model_type.to_s}(:#{key}) record: #{e.class.to_s}: #{e.message}"
    add_to_backing_hash(key, nil, e)
  end
end

#record_idsObject



17
18
19
# File 'lib/factory_data_preloader/preloaded_data_hash.rb', line 17

def record_ids
  @backing_hash.values.select { |value| value.is_a?(Fixnum) }
end