Class: MasterLoader::Batch
- Inherits:
-
Object
- Object
- MasterLoader::Batch
- Defined in:
- lib/master_loader.rb
Instance Attribute Summary collapse
-
#fulfilled ⇒ Object
Returns the value of attribute fulfilled.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #fulfilled? ⇒ Boolean
-
#initialize(loader_block, name: nil, max_batch_size: Float::INFINITY) ⇒ Batch
constructor
A new instance of Batch.
- #queue(key) ⇒ Object
Constructor Details
permalink #initialize(loader_block, name: nil, max_batch_size: Float::INFINITY) ⇒ Batch
Returns a new instance of Batch.
54 55 56 57 58 59 60 61 |
# File 'lib/master_loader.rb', line 54 def initialize(loader_block, name: nil, max_batch_size: Float::INFINITY) @name = name @queue = [] @loader_block = loader_block @max_batch_size = max_batch_size @fulfilled = false @results = nil end |
Instance Attribute Details
permalink #fulfilled ⇒ Object
Returns the value of attribute fulfilled.
52 53 54 |
# File 'lib/master_loader.rb', line 52 def fulfilled @fulfilled end |
permalink #name ⇒ Object
Returns the value of attribute name.
52 53 54 |
# File 'lib/master_loader.rb', line 52 def name @name end |
Instance Method Details
permalink #fulfilled? ⇒ Boolean
87 88 89 |
# File 'lib/master_loader.rb', line 87 def fulfilled? @fulfilled end |
permalink #queue(key) ⇒ Object
[View source]
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 |