Module: Pacer::Routes::BulkOperations
- Included in:
- PathsRoute, RouteOperations
- Defined in:
- lib/pacer/route/mixin/bulk_operations.rb
Overview
Additional iteration methods that allow for rapid data manipulation in transactional graphs. Bulk operations automatically manage transactions in larger batches rather than on every element created or removed or every property set.
Instance Method Summary (collapse)
-
- (Object) bulk_job(size = nil, target_graph = nil)
Iterates over each element in the route, controlling transactions so that they are only committed once every size records.
-
- (Object) bulk_map(size = nil, target_graph = nil)
Like bulk_job that also returns an array of results.
Instance Method Details
- (Object) bulk_job(size = nil, target_graph = nil)
Iterates over each element in the route, controlling transactions so that they are only committed once every size records.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/pacer/route/mixin/bulk_operations.rb', line 20 def bulk_job(size = nil, target_graph = nil) target_graph ||= graph if target_graph and not target_graph.in_bulk_job? begin target_graph.in_bulk_job = true size ||= target_graph.bulk_job_size counter = 0 each_slice(size) do |slice| print counter if Pacer.verbose? counter += size target_graph.managed_manual_transaction do target_graph.unmanaged_transactions do slice.each do |element| yield element end end print '.' if Pacer.verbose? end end ensure puts '!' if Pacer.verbose? target_graph.in_bulk_job = false end elsif target_graph each do |element| yield element end else raise 'No graph in route for bulk job' end end |
- (Object) bulk_map(size = nil, target_graph = nil)
Like bulk_job that also returns an array of results
9 10 11 12 13 14 15 |
# File 'lib/pacer/route/mixin/bulk_operations.rb', line 9 def bulk_map(size = nil, target_graph = nil) result = [] bulk_job(size, target_graph) do |e| result << yield(e) end result end |