class ConcurrentRails::Promises
Attributes
executor[R]
instance[R]
Public Class Methods
new(executor)
click to toggle source
# File lib/concurrent_rails/promises.rb, line 12 def initialize(executor) @executor = executor end
Public Instance Methods
touch()
click to toggle source
# File lib/concurrent_rails/promises.rb, line 35 def touch @instance = rails_wrapped { instance.touch } self end
wait(timeout = nil)
click to toggle source
# File lib/concurrent_rails/promises.rb, line 41 def wait(timeout = nil) result = permit_concurrent_loads { instance.__send__(:wait_until_resolved, timeout) } timeout ? result : self end
Private Instance Methods
permit_concurrent_loads(&block)
click to toggle source
# File lib/concurrent_rails/promises.rb, line 75 def permit_concurrent_loads(&block) rails_wrapped do ActiveSupport::Dependencies.interlock.permit_concurrent_loads(&block) end end
rails_wrapped(&block)
click to toggle source
# File lib/concurrent_rails/promises.rb, line 71 def rails_wrapped(&block) Rails.application.executor.wrap(&block) end