def paginate return enum_for(:paginate) unless block_given? page = 0 page_count = nil partners = [] loop do response = fetch_all(page) page_count ||= (response['partners_count'].to_f / PARTNERS_PER_PAGE) yield response["partners"] break if page >= page_count page += 1 end end client.paginate.lazy.take(3).flatten # takes first 3 pages of partners client.paginate.each { |parnters| ... } # takes all partners