class ConcurrentRails::Multi
Attributes
actions[R]
exceptions[R]
executor[R]
futures[R]
Public Class Methods
enqueue(*actions, executor: :io)
click to toggle source
# File lib/concurrent_rails/multi.rb, line 5 def self.enqueue(*actions, executor: :io) raise ArgumentError, '#enqueue accepts `Proc`s only' unless actions.all?(Proc) new(actions, executor).enqueue end
new(actions, executor)
click to toggle source
# File lib/concurrent_rails/multi.rb, line 11 def initialize(actions, executor) @actions = actions @executor = executor @exceptions = Concurrent::Array.new end
Public Instance Methods
complete?()
click to toggle source
# File lib/concurrent_rails/multi.rb, line 35 def complete? futures.all?(&:complete?) end
compute()
click to toggle source
# File lib/concurrent_rails/multi.rb, line 27 def compute futures.map(&:value) end
compute!()
click to toggle source
# File lib/concurrent_rails/multi.rb, line 31 def compute! futures.map(&:value!) end
enqueue()
click to toggle source
# File lib/concurrent_rails/multi.rb, line 17 def enqueue @futures = actions.map do |action| f = ConcurrentRails::Future.new(executor: executor, &action) f.add_observer(self) f.execute end self end
errors()
click to toggle source
# File lib/concurrent_rails/multi.rb, line 39 def errors @exceptions end
Private Instance Methods
update(_time, _value, reason)
click to toggle source
# File lib/concurrent_rails/multi.rb, line 45 def update(_time, _value, reason) @exceptions << reason if reason end