Method: MasterLoader::Batch#queue

Defined in:
lib/master_loader.rb

#queue(key) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/master_loader.rb', line 63

def queue(key)
  @queue << key

  DelayedResult.new do
    results = if @fulfilled
                @results
              else
                @fulfilled = true
                r = @loader_block.call(@queue)
                @results = if r.is_a?(DelayedResult)
                             normalize_results(r.value!)
                           else
                             normalize_results(r)
                           end
              end

    unless results.key?(key)
      raise StandardError, "Batch loader didn't resolve a key: #{key}. Resolved keys: #{results.keys}"
    end

    results[key]
  end
end