def record_ids(opts = {})
      view = opts[:view] || @opts[:view]
      # The set of record ids is all of the record IDs in the database minus
      # the IDs of CouchDB design documents.
      view_opts = {include_docs: false, stream: true}
      client.view(view, view_opts).keys.lazy.select do |k|
        !k.start_with?('_design')
      end
    end
def record_ids(opts = {})
      view = opts[:view] || @opts[:view]
      # The set of record ids is all of the record IDs in the database minus
      # the IDs of CouchDB design documents.
      view_opts = {include_docs: false, stream: true}
      client.view(view, view_opts).keys.lazy.select do |k|
        !k.start_with?('_design')
      end
    end
@param opts [Hash] options to pass through to client requests.
   If {:couchdb => :view} is not specified, it defaults to using the
   CouchDB `_all_docs` view.
 @see Analysand::Database
 @see http://docs.couchdb.org/en/latest/api/database/bulk-api.html
   CouchDB _all_docs endpoint
 @see http://docs.couchdb.org/en/latest/api/ddoc/views.html CouchDB views
 @see #expected_opts

 Streams a response from a CouchDB view to yield identifiers.

 The following will only send requests to the endpoint until it
 has 1000 record ids:

     record_ids.take(1000)

 @see Analysand::Viewing
 @see Analysand::StreamingViewResponse