Pagoid

Pagoid extracts the difference between WillPaginate and Kaminari as well as provides a standard callback for things like publishing page info to your clients.

Installation

Add this line to your application's Gemfile:

gem 'kaminari'
# OR
gem 'will_paginate'

gem 'pagoid'

And then execute:

$ bundle

Usage

class PeopleController < ApplicationController
  paged do |pager|
    [:paging] = pager.headers if pager.display_headers?
  end

  def index
    @people = paginated Person
    render json: { metadata: metdata, result: @people }
  end

  private
  def 
    @metdata ||= {}
  end
end

You can stack paged blocks through inheritance:

class ApplicationController < ActionController::Base
  paged do |pager|
    notice! pager.headers
  end

  def notice!(hash)
    Rails.logger.debug hash
  end
end

class PeopleController < ApplicationController
  #.. from above
end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request