blob: 4a8c54414de5c6f56dd82a6c2795746388ad70ba (
plain) (
tree)
|
|
module ActiveRecord
# Statement cache is used to cache a single statement in order to avoid creating the AST again.
# Initializing the cache is done by passing the statement in the initialization block:
#
# cache = ActiveRecord::StatementCache.new do
# Book.where(:name => "my book").limit(100)
# end
#
# The cached statement is executed by using the +execute+ method:
#
# cache.execute
#
# The relation returned by yield is cached, and for each +execute+ call the cached relation gets duped.
# Database is queried when +to_a+ is called on the relation.
class StatementCache
def initialize
@relation = yield
raise ArgumentError.new("Statement cannot be nil") if @relation.nil?
end
def execute
@relation.dup.to_a
end
end
end
|