Class: ActiveRecord::Promise
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
ActiveRecord::Promise::Complete
|
|
Inherits: | BasicObject |
Defined in: | activerecord/lib/active_record/promise.rb |
Instance Attribute Summary
-
#pending? ⇒ Boolean
readonly
Returns whether the associated query is still being executed or not.
Instance Method Summary
-
#then(&block)
Returns a new
Promise
that will apply the passed block when the value is accessed: -
#value
Returns the query result.
Instance Attribute Details
#pending? ⇒ Boolean
(readonly)
Returns whether the associated query is still being executed or not.
# File 'activerecord/lib/active_record/promise.rb', line 13
def pending? @future_result.pending? end
Instance Method Details
#then(&block)
Returns a new Promise
that will apply the passed block when the value is accessed:
Post.async_pick(:title).then { |title| title.upcase }.value
# => "POST TITLE"
# File 'activerecord/lib/active_record/promise.rb', line 36
def then(&block) Promise.new(@future_result, @block ? @block >> block : block) end
#value
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.
# 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