@fetch_multiple_pages = true
@arvados_api_token = Thread.current[:arvados_api_token]
@reader_tokens = Thread.current[:reader_tokens]
+ @results = nil
+ @count = nil
+ @offset = 0
+ @cond = nil
+ @eager = nil
+ @select = nil
+ @orderby_spec = nil
+ @filters = nil
+ @distinct = nil
+ @include_trash = nil
+ @limit = nil
end
def eager(bool=true)
end
end
end
- @cond.keys.select { |x| x.match /_kind$/ }.each do |kind_key|
+ @cond.keys.select { |x| x.match(/_kind$/) }.each do |kind_key|
if @cond[kind_key].is_a? Class
@cond = @cond.merge({ kind_key => 'arvados#' + arvados_api_client.class_kind(@cond[kind_key]) })
end
def each(&block)
if not @results.nil?
- @results.each &block
+ @results.each(&block)
else
+ results = []
self.each_page do |items|
items.each do |i|
+ results << i
block.call i
end
end
+ # Cache results only if all were retrieved (block didn't raise
+ # an exception).
+ @results = results
end
self
end
api_params[:filters] = @filters if @filters
api_params[:distinct] = @distinct if @distinct
api_params[:include_trash] = @include_trash if @include_trash
+ api_params[:cluster_id] = Rails.configuration.ClusterID
if @fetch_multiple_pages
# Default limit to (effectively) api server's MAX_LIMIT
api_params[:limit] = 2**(0.size*8 - 1) - 1