class ApiPagination::Configuration

Attributes

base_url[RW]
include_total[RW]
page_header[RW]
per_page_header[RW]
response_formats[RW]
total_header[RW]

Public Class Methods

new() click to toggle source
# File lib/api-pagination/configuration.rb, line 19
def initialize
  @total_header    = 'Total'
  @per_page_header = 'Per-Page'
  @page_header     = nil
  @include_total   = true
  @base_url   = nil
  @response_formats = [:json, :xml]
end

Public Instance Methods

configure() { |self| ... } click to toggle source
# File lib/api-pagination/configuration.rb, line 15
def configure(&block)
  yield self
end
paginator() click to toggle source
# File lib/api-pagination/configuration.rb, line 55
def paginator
  if instance_variable_defined? :@paginator
    @paginator
  else
    set_paginator
  end
end
paginator=(paginator) click to toggle source
# File lib/api-pagination/configuration.rb, line 63
def paginator=(paginator)
  case paginator.to_sym
  when :pagy
    use_pagy
  when :kaminari
    use_kaminari
  when :will_paginate
    use_will_paginate
  else
    raise StandardError, "Unknown paginator: #{paginator}"
  end
end

Private Instance Methods

first_page?() click to toggle source
# File lib/api-pagination/configuration.rb, line 119
def first_page?() !previous_page end
last_page?() click to toggle source
# File lib/api-pagination/configuration.rb, line 120
def last_page?() !next_page end
set_paginator() click to toggle source
# File lib/api-pagination/configuration.rb, line 78
    def set_paginator
      conditions = [defined?(Pagy), defined?(Kaminari), defined?(WillPaginate::CollectionMethods)]
      if conditions.compact.size > 1
        Kernel.warn <<-WARNING
Warning: api-pagination relies on Pagy, Kaminari, or WillPaginate, but more than
one are currently active. If possible, you should remove one or the other. If
you can't, you _must_ configure api-pagination on your own. For example:

ApiPagination.configure do |config|
  config.paginator = :kaminari
end

You should also configure Kaminari to use a different `per_page` method name as
using these gems together causes a conflict; some information can be found at
https://github.com/activeadmin/activeadmin/wiki/How-to-work-with-will_paginate

Kaminari.configure do |config|
  config.page_method_name = :per_page_kaminari
end

WARNING
      elsif defined?(Pagy)
        use_pagy
      elsif defined?(Kaminari)
        use_kaminari
      elsif defined?(WillPaginate::CollectionMethods)
        use_will_paginate
      end
    end
use_kaminari() click to toggle source
# File lib/api-pagination/configuration.rb, line 112
def use_kaminari
  require 'kaminari/models/array_extension'
  @paginator = :kaminari
end
use_pagy() click to toggle source
# File lib/api-pagination/configuration.rb, line 108
def use_pagy
  @paginator = :pagy
end
use_will_paginate() click to toggle source
# File lib/api-pagination/configuration.rb, line 117
def use_will_paginate
  WillPaginate::CollectionMethods.module_eval do
    def first_page?() !previous_page end
    def last_page?() !next_page end
  end

  @paginator = :will_paginate
end