class ActiveRecord::Promise
Inherits From
-
class
BasicObject
Public instance methods
Returns whether the associated query is still being executed or not.
Source code GitHub
# File activerecord/lib/active_record/promise.rb, line 13
def pending?
@future_result.pending?
end
Returns a new ActiveRecord::Promise
that will apply the passed block when the value is accessed:
Post.async_pick(:title).then { |title| title.upcase }.value
# => "POST TITLE"
Source code GitHub
# File activerecord/lib/active_record/promise.rb, line 36
def then(&block)
Promise.new(@future_result, @block ? @block >> block : block)
end
Returns the query result. If the query wasn’t completed yet, accessing #value
will block until the query completes. If the query failed, #value
will raise the corresponding error.
Source code GitHub
# File activerecord/lib/active_record/promise.rb, line 20
def value
return @value if defined? @value
result = @future_result.result
@value = if @block
@block.call(result)
else
result
end
end