Explicitly proxy === because the instance method removal above doesn’t catch it.
# File lib/couchrest/mixins/collection.rb, line 171 def ===(other) load_target other === @target end
See Collection.paginate
# File lib/couchrest/mixins/collection.rb, line 134 def paginate(options = {}) page, per_page = parse_options(options) results = @database.send(@query_type, @view_name, pagination_options(page, per_page)) remember_where_we_left_off(results, page) instances = convert_to_container_array(results) begin if Kernel.const_get('WillPaginate') total_rows = results['total_rows'].to_i paginated = WillPaginate::Collection.create(page, per_page, total_rows) do |pager| pager.replace(instances) end return paginated end rescue NameError # When not using will_paginate, not much we could do about this. :x end return instances end
See Collection.paginated_each
# File lib/couchrest/mixins/collection.rb, line 155 def paginated_each(options = {}, &block) page, per_page = parse_options(options) begin collection = paginate({:page => page, :per_page => per_page}) collection.each(&block) page += 1 end until collection.size < per_page end
# File lib/couchrest/mixins/collection.rb, line 165 def respond_to?(*args) proxy_respond_to?(*args) || (load_target && @target.respond_to?(*args)) end
Create a new CollectionProxy to represent the specified view. If a container class is specified, the proxy will create an object of the given type for each row that comes back from the view. If no container class is specified, the raw results are returned.
The CollectionProxy provides support for paginating over a collection via the paginate, and #paginated_each methods.
# File lib/couchrest/mixins/collection.rb, line 116 def initialize(database, design_doc, view_name, view_options = {}, container_class = nil, query_type = :view) raise ArgumentError, "database is a required parameter" if database.nil? @database = database @container_class = container_class @query_type = query_type strip_pagination_options(view_options) @view_options = view_options if design_doc.class == Design @view_name = "#{design_doc.name}/#{view_name}" else @view_name = "#{design_doc}/#{view_name}" end end