will_paginate 3.0.12 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +1 -1
 - data/lib/will_paginate/active_record.rb +5 -14
 - data/lib/will_paginate/data_mapper.rb +6 -1
 - data/lib/will_paginate/mongoid.rb +46 -0
 - data/lib/will_paginate/railtie.rb +9 -13
 - data/lib/will_paginate/version.rb +2 -2
 - data/lib/will_paginate/view_helpers/action_view.rb +1 -3
 - data/lib/will_paginate/view_helpers/link_renderer.rb +4 -4
 - data/lib/will_paginate/view_helpers/link_renderer_base.rb +1 -1
 - data/spec/database.yml +7 -11
 - data/spec/finders/active_record_spec.rb +8 -167
 - data/spec/finders/data_mapper_spec.rb +13 -0
 - data/spec/finders/mongoid_spec.rb +140 -0
 - data/spec/fixtures/developer.rb +0 -7
 - data/spec/spec_helper.rb +21 -1
 - data/spec/view_helpers/action_view_spec.rb +4 -11
 - data/spec/view_helpers/view_example_group.rb +1 -2
 - metadata +4 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b3445d24047dd419909e314bc5f1b9eb3fdb7f73
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2e6ce5705bc95b523bdd8a7ffa9d8e0b35acc36f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: bdc9b0d1f20379dc1df3dc503796834b329976c90a63f4e0f14b77152aef8721bea240f850d0abc0c0171a3e1ad10d5c88a354136e47d4bb933b29a205311d7d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c35edfea8e81e70fef045d9f1c3c32bea89723a1bd74a6c2edb438c62fc54c3356eb4704329c42b35760178c71a505ee0d86c0109a6f7cd3fdacd5276af4eb74
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -58,4 +58,4 @@ Happy paginating. 
     | 
|
| 
       58 
58 
     | 
    
         
             
            [install]: https://github.com/mislav/will_paginate/wiki/Installation "will_paginate installation"
         
     | 
| 
       59 
59 
     | 
    
         
             
            [group]: http://groups.google.com/group/will_paginate "will_paginate discussion and support group"
         
     | 
| 
       60 
60 
     | 
    
         
             
            [issues]: https://github.com/mislav/will_paginate/issues
         
     | 
| 
       61 
     | 
    
         
            -
            [css]: http://mislav. 
     | 
| 
      
 61 
     | 
    
         
            +
            [css]: http://mislav.github.io/will_paginate/
         
     | 
| 
         @@ -2,11 +2,6 @@ require 'will_paginate/per_page' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'will_paginate/page_number'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'will_paginate/collection'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'active_record'
         
     | 
| 
       5 
     | 
    
         
            -
            begin
         
     | 
| 
       6 
     | 
    
         
            -
              require 'active_record/deprecated_finders'
         
     | 
| 
       7 
     | 
    
         
            -
            rescue LoadError
         
     | 
| 
       8 
     | 
    
         
            -
              # only for Rails 4.1
         
     | 
| 
       9 
     | 
    
         
            -
            end
         
     | 
| 
       10 
5 
     | 
    
         | 
| 
       11 
6 
     | 
    
         
             
            module WillPaginate
         
     | 
| 
       12 
7 
     | 
    
         
             
              # = Paginating finders for ActiveRecord models
         
     | 
| 
         @@ -26,7 +21,7 @@ module WillPaginate 
     | 
|
| 
       26 
21 
     | 
    
         
             
                  include WillPaginate::CollectionMethods
         
     | 
| 
       27 
22 
     | 
    
         | 
| 
       28 
23 
     | 
    
         
             
                  attr_accessor :current_page
         
     | 
| 
       29 
     | 
    
         
            -
                  attr_writer :total_entries 
     | 
| 
      
 24 
     | 
    
         
            +
                  attr_writer :total_entries
         
     | 
| 
       30 
25 
     | 
    
         | 
| 
       31 
26 
     | 
    
         
             
                  def per_page(value = nil)
         
     | 
| 
       32 
27 
     | 
    
         
             
                    if value.nil? then limit_value
         
     | 
| 
         @@ -88,9 +83,6 @@ module WillPaginate 
     | 
|
| 
       88 
83 
     | 
    
         
             
                      excluded = [:order, :limit, :offset, :reorder]
         
     | 
| 
       89 
84 
     | 
    
         
             
                      excluded << :includes unless eager_loading?
         
     | 
| 
       90 
85 
     | 
    
         
             
                      rel = self.except(*excluded)
         
     | 
| 
       91 
     | 
    
         
            -
                      # TODO: hack. decide whether to keep
         
     | 
| 
       92 
     | 
    
         
            -
                      rel = rel.apply_finder_options(@wp_count_options) if defined? @wp_count_options
         
     | 
| 
       93 
     | 
    
         
            -
                      
         
     | 
| 
       94 
86 
     | 
    
         
             
                      column_name = (select_for_count(rel) || :all)
         
     | 
| 
       95 
87 
     | 
    
         
             
                      rel.count(column_name)
         
     | 
| 
       96 
88 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -142,7 +134,6 @@ module WillPaginate 
     | 
|
| 
       142 
134 
     | 
    
         
             
                  def copy_will_paginate_data(other)
         
     | 
| 
       143 
135 
     | 
    
         
             
                    other.current_page = current_page unless other.current_page
         
     | 
| 
       144 
136 
     | 
    
         
             
                    other.total_entries = nil if defined? @total_entries_queried
         
     | 
| 
       145 
     | 
    
         
            -
                    other.wp_count_options = @wp_count_options if defined? @wp_count_options
         
     | 
| 
       146 
137 
     | 
    
         
             
                    other
         
     | 
| 
       147 
138 
     | 
    
         
             
                  end
         
     | 
| 
       148 
139 
     | 
    
         | 
| 
         @@ -158,15 +149,15 @@ module WillPaginate 
     | 
|
| 
       158 
149 
     | 
    
         
             
                  def paginate(options)
         
     | 
| 
       159 
150 
     | 
    
         
             
                    options  = options.dup
         
     | 
| 
       160 
151 
     | 
    
         
             
                    pagenum  = options.fetch(:page) { raise ArgumentError, ":page parameter required" }
         
     | 
| 
      
 152 
     | 
    
         
            +
                    options.delete(:page)
         
     | 
| 
       161 
153 
     | 
    
         
             
                    per_page = options.delete(:per_page) || self.per_page
         
     | 
| 
       162 
154 
     | 
    
         
             
                    total    = options.delete(:total_entries)
         
     | 
| 
       163 
155 
     | 
    
         | 
| 
       164 
     | 
    
         
            -
                     
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
      
 156 
     | 
    
         
            +
                    if options.any?
         
     | 
| 
      
 157 
     | 
    
         
            +
                      raise ArgumentError, "unsupported parameters: %p" % options.keys
         
     | 
| 
      
 158 
     | 
    
         
            +
                    end
         
     | 
| 
       166 
159 
     | 
    
         | 
| 
       167 
160 
     | 
    
         
             
                    rel = limit(per_page.to_i).page(pagenum)
         
     | 
| 
       168 
     | 
    
         
            -
                    rel = rel.apply_finder_options(options) if options.any?
         
     | 
| 
       169 
     | 
    
         
            -
                    rel.wp_count_options = count_options    if count_options
         
     | 
| 
       170 
161 
     | 
    
         
             
                    rel.total_entries = total.to_i          unless total.blank?
         
     | 
| 
       171 
162 
     | 
    
         
             
                    rel
         
     | 
| 
       172 
163 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -21,11 +21,15 @@ module WillPaginate 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    options  = options.dup
         
     | 
| 
       22 
22 
     | 
    
         
             
                    pagenum  = options.fetch(:page) { raise ArgumentError, ":page parameter required" }
         
     | 
| 
       23 
23 
     | 
    
         
             
                    per_page = options.delete(:per_page) || self.per_page
         
     | 
| 
      
 24 
     | 
    
         
            +
                    total    = options.delete(:total_entries)
         
     | 
| 
       24 
25 
     | 
    
         | 
| 
       25 
26 
     | 
    
         
             
                    options.delete(:page)
         
     | 
| 
       26 
27 
     | 
    
         
             
                    options[:limit] = per_page.to_i
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                    col = all(options).page(pagenum)
         
     | 
| 
      
 31 
     | 
    
         
            +
                    col.total_entries = total.to_i unless total.nil? || (total.kind_of?(String) && total.strip.empty?)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    col
         
     | 
| 
       29 
33 
     | 
    
         
             
                  end
         
     | 
| 
       30 
34 
     | 
    
         
             
                end
         
     | 
| 
       31 
35 
     | 
    
         | 
| 
         @@ -33,6 +37,7 @@ module WillPaginate 
     | 
|
| 
       33 
37 
     | 
    
         
             
                  include WillPaginate::CollectionMethods
         
     | 
| 
       34 
38 
     | 
    
         | 
| 
       35 
39 
     | 
    
         
             
                  attr_accessor :current_page
         
     | 
| 
      
 40 
     | 
    
         
            +
                  attr_writer :total_entries
         
     | 
| 
       36 
41 
     | 
    
         | 
| 
       37 
42 
     | 
    
         
             
                  def paginated?
         
     | 
| 
       38 
43 
     | 
    
         
             
                    !current_page.nil?
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'mongoid'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'will_paginate/collection'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module WillPaginate
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Mongoid
         
     | 
| 
      
 6 
     | 
    
         
            +
                module CriteriaMethods
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def paginate(options = {})
         
     | 
| 
      
 8 
     | 
    
         
            +
                    extend CollectionMethods
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @current_page = WillPaginate::PageNumber(options[:page] || @current_page || 1)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @page_multiplier = current_page - 1
         
     | 
| 
      
 11 
     | 
    
         
            +
                    pp = (options[:per_page] || per_page || WillPaginate.per_page).to_i
         
     | 
| 
      
 12 
     | 
    
         
            +
                    limit(pp).skip(@page_multiplier * pp)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  def per_page(value = :non_given)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    if value == :non_given
         
     | 
| 
      
 17 
     | 
    
         
            +
                      options[:limit] == 0 ? nil : options[:limit] # in new Mongoid versions a nil limit is saved as 0
         
     | 
| 
      
 18 
     | 
    
         
            +
                    else
         
     | 
| 
      
 19 
     | 
    
         
            +
                      limit(value)
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  def page(page)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    paginate(:page => page)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                module CollectionMethods
         
     | 
| 
      
 29 
     | 
    
         
            +
                  attr_reader :current_page
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  def total_entries
         
     | 
| 
      
 32 
     | 
    
         
            +
                    @total_entries ||= count
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  def total_pages
         
     | 
| 
      
 36 
     | 
    
         
            +
                    (total_entries / per_page.to_f).ceil
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  def offset
         
     | 
| 
      
 40 
     | 
    
         
            +
                    @page_multiplier * per_page
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                ::Mongoid::Criteria.send(:include, CriteriaMethods)
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -18,6 +18,8 @@ module WillPaginate 
     | 
|
| 
       18 
18 
     | 
    
         
             
                    require 'will_paginate/view_helpers/action_view'
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
                  self.class.add_locale_path config
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       21 
23 
     | 
    
         
             
                  # early access to ViewHelpers.pagination_options
         
     | 
| 
       22 
24 
     | 
    
         
             
                  require 'will_paginate/view_helpers'
         
     | 
| 
       23 
25 
     | 
    
         
             
                end
         
     | 
| 
         @@ -29,6 +31,10 @@ module WillPaginate 
     | 
|
| 
       29 
31 
     | 
    
         
             
                  ActionController::Base.extend ControllerRescuePatch
         
     | 
| 
       30 
32 
     | 
    
         
             
                end
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
                def self.add_locale_path(config)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  config.i18n.load_path.unshift(*WillPaginate::I18n.load_path)
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       32 
38 
     | 
    
         
             
                # Extending the exception handler middleware so it properly detects
         
     | 
| 
       33 
39 
     | 
    
         
             
                # WillPaginate::InvalidPage regardless of it being a tag module.
         
     | 
| 
       34 
40 
     | 
    
         
             
                module ShowExceptionsPatch
         
     | 
| 
         @@ -38,15 +44,9 @@ module WillPaginate 
     | 
|
| 
       38 
44 
     | 
    
         
             
                    alias_method :status_code, :status_code_with_paginate
         
     | 
| 
       39 
45 
     | 
    
         
             
                  end
         
     | 
| 
       40 
46 
     | 
    
         
             
                  def status_code_with_paginate(exception = @exception)
         
     | 
| 
       41 
     | 
    
         
            -
                     
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                      exception.original_exception
         
     | 
| 
       45 
     | 
    
         
            -
                    else
         
     | 
| 
       46 
     | 
    
         
            -
                      exception
         
     | 
| 
       47 
     | 
    
         
            -
                    end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                    if actual_exception.is_a?(WillPaginate::InvalidPage)
         
     | 
| 
      
 47 
     | 
    
         
            +
                    if exception.is_a?(WillPaginate::InvalidPage) or
         
     | 
| 
      
 48 
     | 
    
         
            +
                        (exception.respond_to?(:original_exception) &&
         
     | 
| 
      
 49 
     | 
    
         
            +
                          exception.original_exception.is_a?(WillPaginate::InvalidPage))
         
     | 
| 
       50 
50 
     | 
    
         
             
                      Rack::Utils.status_code(:not_found)
         
     | 
| 
       51 
51 
     | 
    
         
             
                    else
         
     | 
| 
       52 
52 
     | 
    
         
             
                      original_method = method(:status_code_without_paginate)
         
     | 
| 
         @@ -69,7 +69,3 @@ module WillPaginate 
     | 
|
| 
       69 
69 
     | 
    
         
             
                end
         
     | 
| 
       70 
70 
     | 
    
         
             
              end
         
     | 
| 
       71 
71 
     | 
    
         
             
            end
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
            ActiveSupport.on_load :i18n do
         
     | 
| 
       74 
     | 
    
         
            -
              I18n.load_path.concat(WillPaginate::I18n.load_path)
         
     | 
| 
       75 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -99,8 +99,6 @@ module WillPaginate 
     | 
|
| 
       99 
99 
     | 
    
         
             
                class LinkRenderer < ViewHelpers::LinkRenderer
         
     | 
| 
       100 
100 
     | 
    
         
             
                  protected
         
     | 
| 
       101 
101 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
                  GET_PARAMS_BLACKLIST = [:script_name, :original_script_name]
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
102 
     | 
    
         
             
                  def default_url_params
         
     | 
| 
       105 
103 
     | 
    
         
             
                    {}
         
     | 
| 
       106 
104 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -120,7 +118,7 @@ module WillPaginate 
     | 
|
| 
       120 
118 
     | 
    
         | 
| 
       121 
119 
     | 
    
         
             
                  def merge_get_params(url_params)
         
     | 
| 
       122 
120 
     | 
    
         
             
                    if @template.respond_to? :request and @template.request and @template.request.get?
         
     | 
| 
       123 
     | 
    
         
            -
                      symbolized_update(url_params, @template.params 
     | 
| 
      
 121 
     | 
    
         
            +
                      symbolized_update(url_params, @template.params)
         
     | 
| 
       124 
122 
     | 
    
         
             
                    end
         
     | 
| 
       125 
123 
     | 
    
         
             
                    url_params
         
     | 
| 
       126 
124 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -108,17 +108,17 @@ module WillPaginate 
     | 
|
| 
       108 
108 
     | 
    
         | 
| 
       109 
109 
     | 
    
         
             
                  def rel_value(page)
         
     | 
| 
       110 
110 
     | 
    
         
             
                    case page
         
     | 
| 
       111 
     | 
    
         
            -
                    when @collection.current_page - 1; 'prev'
         
     | 
| 
      
 111 
     | 
    
         
            +
                    when @collection.current_page - 1; 'prev' + (page == 1 ? ' start' : '')
         
     | 
| 
       112 
112 
     | 
    
         
             
                    when @collection.current_page + 1; 'next'
         
     | 
| 
      
 113 
     | 
    
         
            +
                    when 1; 'start'
         
     | 
| 
       113 
114 
     | 
    
         
             
                    end
         
     | 
| 
       114 
115 
     | 
    
         
             
                  end
         
     | 
| 
       115 
116 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
                  def symbolized_update(target, other 
     | 
| 
      
 117 
     | 
    
         
            +
                  def symbolized_update(target, other)
         
     | 
| 
       117 
118 
     | 
    
         
             
                    other.each do |key, value|
         
     | 
| 
       118 
119 
     | 
    
         
             
                      key = key.to_sym
         
     | 
| 
       119 
120 
     | 
    
         
             
                      existing = target[key]
         
     | 
| 
       120 
     | 
    
         
            -
                       
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
      
 121 
     | 
    
         
            +
                      
         
     | 
| 
       122 
122 
     | 
    
         
             
                      if value.is_a?(Hash) and (existing.is_a?(Hash) or existing.nil?)
         
     | 
| 
       123 
123 
     | 
    
         
             
                        symbolized_update(existing || (target[key] = {}), value)
         
     | 
| 
       124 
124 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -30,7 +30,7 @@ module WillPaginate 
     | 
|
| 
       30 
30 
     | 
    
         
             
                    window_from = current_page - inner_window
         
     | 
| 
       31 
31 
     | 
    
         
             
                    window_to = current_page + inner_window
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                    # adjust lower or upper limit if  
     | 
| 
      
 33 
     | 
    
         
            +
                    # adjust lower or upper limit if other is out of bounds
         
     | 
| 
       34 
34 
     | 
    
         
             
                    if window_to > total_pages
         
     | 
| 
       35 
35 
     | 
    
         
             
                      window_from -= window_to - total_pages
         
     | 
| 
       36 
36 
     | 
    
         
             
                      window_to = total_pages
         
     | 
    
        data/spec/database.yml
    CHANGED
    
    | 
         @@ -3,27 +3,23 @@ sqlite3: 
     | 
|
| 
       3 
3 
     | 
    
         
             
              adapter: sqlite3
         
     | 
| 
       4 
4 
     | 
    
         
             
              timeout: 500
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            mysql: 
     | 
| 
      
 6 
     | 
    
         
            +
            mysql:
         
     | 
| 
       7 
7 
     | 
    
         
             
              adapter: mysql
         
     | 
| 
       8 
8 
     | 
    
         
             
              database: will_paginate
         
     | 
| 
       9 
9 
     | 
    
         
             
              username: 
         
     | 
| 
       10 
10 
     | 
    
         
             
              encoding: utf8
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              host: localhost
         
     | 
| 
       13 
     | 
    
         
            -
              socket: /var/run/mysql5/mysqld.sock
         
     | 
| 
       14 
     | 
    
         
            -
            <% elsif File.exist? "/tmp/mysql.sock" %>
         
     | 
| 
       15 
     | 
    
         
            -
              host: localhost
         
     | 
| 
       16 
     | 
    
         
            -
              socket: /tmp/mysql.sock
         
     | 
| 
       17 
     | 
    
         
            -
            <% else %>
         
     | 
| 
       18 
     | 
    
         
            -
              host: 127.0.0.1
         
     | 
| 
       19 
     | 
    
         
            -
            <% end %>
         
     | 
| 
      
 11 
     | 
    
         
            +
              socket: <%= ENV["BOXEN_MYSQL_SOCKET"] %>
         
     | 
| 
       20 
12 
     | 
    
         | 
| 
       21 
13 
     | 
    
         
             
            mysql2:
         
     | 
| 
       22 
     | 
    
         
            -
              <<: *mysql
         
     | 
| 
       23 
14 
     | 
    
         
             
              adapter: mysql2
         
     | 
| 
      
 15 
     | 
    
         
            +
              database: will_paginate
         
     | 
| 
      
 16 
     | 
    
         
            +
              username: 
         
     | 
| 
      
 17 
     | 
    
         
            +
              encoding: utf8
         
     | 
| 
      
 18 
     | 
    
         
            +
              socket: <%= ENV["BOXEN_MYSQL_SOCKET"] %>
         
     | 
| 
       24 
19 
     | 
    
         | 
| 
       25 
20 
     | 
    
         
             
            postgres:
         
     | 
| 
       26 
21 
     | 
    
         
             
              adapter: postgresql
         
     | 
| 
       27 
22 
     | 
    
         
             
              database: will_paginate
         
     | 
| 
       28 
23 
     | 
    
         
             
              username: <%= "postgres" if ENV["TRAVIS"] %>
         
     | 
| 
       29 
24 
     | 
    
         
             
              min_messages: warning
         
     | 
| 
      
 25 
     | 
    
         
            +
              port: <%= ENV["BOXEN_POSTGRESQL_PORT"] %>
         
     | 
| 
         @@ -104,13 +104,6 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       104 
104 
     | 
    
         
             
                  rel.last(2).should == users(:dev_7, :dev_8)
         
     | 
| 
       105 
105 
     | 
    
         
             
                  rel.page(3).last.should == users(:poor_jamis)
         
     | 
| 
       106 
106 
     | 
    
         
             
                end
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                it "keeps pagination data after 'scoped'" do
         
     | 
| 
       109 
     | 
    
         
            -
                  rel = Developer.page(2).scoped
         
     | 
| 
       110 
     | 
    
         
            -
                  rel.per_page.should == 10
         
     | 
| 
       111 
     | 
    
         
            -
                  rel.offset.should == 10
         
     | 
| 
       112 
     | 
    
         
            -
                  rel.current_page.should == 2
         
     | 
| 
       113 
     | 
    
         
            -
                end
         
     | 
| 
       114 
107 
     | 
    
         
             
              end
         
     | 
| 
       115 
108 
     | 
    
         | 
| 
       116 
109 
     | 
    
         
             
              describe "counting" do
         
     | 
| 
         @@ -136,15 +129,6 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       136 
129 
     | 
    
         
             
                  }.should run_queries(2)
         
     | 
| 
       137 
130 
     | 
    
         
             
                end
         
     | 
| 
       138 
131 
     | 
    
         | 
| 
       139 
     | 
    
         
            -
                it "remembers custom count options in sub-relations" do
         
     | 
| 
       140 
     | 
    
         
            -
                  topics = Topic.paginate :page => 1, :per_page => 3, :count => {:conditions => "title LIKE '%futurama%'"}
         
     | 
| 
       141 
     | 
    
         
            -
                  topics.total_entries.should == 1
         
     | 
| 
       142 
     | 
    
         
            -
                  topics.length.should == 3
         
     | 
| 
       143 
     | 
    
         
            -
                  lambda {
         
     | 
| 
       144 
     | 
    
         
            -
                    topics.order('id').total_entries.should == 1
         
     | 
| 
       145 
     | 
    
         
            -
                  }.should run_queries(1)
         
     | 
| 
       146 
     | 
    
         
            -
                end
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
132 
     | 
    
         
             
                it "supports empty? method" do
         
     | 
| 
       149 
133 
     | 
    
         
             
                  topics = Topic.paginate :page => 1, :per_page => 3
         
     | 
| 
       150 
134 
     | 
    
         
             
                  lambda {
         
     | 
| 
         @@ -250,10 +234,11 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       250 
234 
     | 
    
         
             
                end
         
     | 
| 
       251 
235 
     | 
    
         | 
| 
       252 
236 
     | 
    
         
             
                it "should strip the order when counting" do
         
     | 
| 
      
 237 
     | 
    
         
            +
                  expected = topics(:ar)
         
     | 
| 
       253 
238 
     | 
    
         
             
                  lambda {
         
     | 
| 
       254 
239 
     | 
    
         
             
                    sql = "select id, title, content from topics order by topics.title"
         
     | 
| 
       255 
240 
     | 
    
         
             
                    topics = Topic.paginate_by_sql sql, :page => 1, :per_page => 2
         
     | 
| 
       256 
     | 
    
         
            -
                    topics.first.should ==  
     | 
| 
      
 241 
     | 
    
         
            +
                    topics.first.should == expected
         
     | 
| 
       257 
242 
     | 
    
         
             
                  }.should run_queries(2)
         
     | 
| 
       258 
243 
     | 
    
         | 
| 
       259 
244 
     | 
    
         
             
                  $query_sql.last.should include('COUNT')
         
     | 
| 
         @@ -295,78 +280,7 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       295 
280 
     | 
    
         
             
                }.should run_queries(2)
         
     | 
| 
       296 
281 
     | 
    
         
             
              end
         
     | 
| 
       297 
282 
     | 
    
         | 
| 
       298 
     | 
    
         
            -
              it "should paginate with :order" do
         
     | 
| 
       299 
     | 
    
         
            -
                result = Topic.paginate :page => 1, :order => 'created_at DESC'
         
     | 
| 
       300 
     | 
    
         
            -
                result.should == topics(:futurama, :harvey_birdman, :rails, :ar).reverse
         
     | 
| 
       301 
     | 
    
         
            -
                result.total_pages.should == 1
         
     | 
| 
       302 
     | 
    
         
            -
              end
         
     | 
| 
       303 
     | 
    
         
            -
              
         
     | 
| 
       304 
     | 
    
         
            -
              it "should paginate with :conditions" do
         
     | 
| 
       305 
     | 
    
         
            -
                result = Topic.paginate :page => 1, :order => 'id ASC',
         
     | 
| 
       306 
     | 
    
         
            -
                  :conditions => ["created_at > ?", 30.minutes.ago]
         
     | 
| 
       307 
     | 
    
         
            -
                result.should == topics(:rails, :ar)
         
     | 
| 
       308 
     | 
    
         
            -
                result.total_pages.should == 1
         
     | 
| 
       309 
     | 
    
         
            -
              end
         
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
              it "should paginate with :include and :conditions" do
         
     | 
| 
       312 
     | 
    
         
            -
                klass = Topic
         
     | 
| 
       313 
     | 
    
         
            -
                klass = klass.references(:replies) if klass.respond_to?(:references)
         
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
                result = klass.paginate \
         
     | 
| 
       316 
     | 
    
         
            -
                  :page     => 1, 
         
     | 
| 
       317 
     | 
    
         
            -
                  :include  => :replies,  
         
     | 
| 
       318 
     | 
    
         
            -
                  :conditions => "replies.content LIKE 'Bird%' ", 
         
     | 
| 
       319 
     | 
    
         
            -
                  :per_page => 10
         
     | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
       321 
     | 
    
         
            -
                expected = klass.find :all,
         
     | 
| 
       322 
     | 
    
         
            -
                  :include => 'replies', 
         
     | 
| 
       323 
     | 
    
         
            -
                  :conditions => "replies.content LIKE 'Bird%' ", 
         
     | 
| 
       324 
     | 
    
         
            -
                  :limit   => 10
         
     | 
| 
       325 
     | 
    
         
            -
             
     | 
| 
       326 
     | 
    
         
            -
                result.should == expected
         
     | 
| 
       327 
     | 
    
         
            -
                result.total_entries.should == 1
         
     | 
| 
       328 
     | 
    
         
            -
              end
         
     | 
| 
       329 
     | 
    
         
            -
             
     | 
| 
       330 
     | 
    
         
            -
              it "should paginate with :include and :order" do
         
     | 
| 
       331 
     | 
    
         
            -
                result = nil
         
     | 
| 
       332 
     | 
    
         
            -
                lambda {
         
     | 
| 
       333 
     | 
    
         
            -
                  result = Topic.paginate(:page => 1, :include => :replies, :per_page => 10,
         
     | 
| 
       334 
     | 
    
         
            -
                    :order => 'replies.created_at asc, topics.created_at asc').to_a
         
     | 
| 
       335 
     | 
    
         
            -
                }.should run_queries(2)
         
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
       337 
     | 
    
         
            -
                expected = Topic.find :all, 
         
     | 
| 
       338 
     | 
    
         
            -
                  :include => 'replies', 
         
     | 
| 
       339 
     | 
    
         
            -
                  :order   => 'replies.created_at asc, topics.created_at asc', 
         
     | 
| 
       340 
     | 
    
         
            -
                  :limit   => 10
         
     | 
| 
       341 
     | 
    
         
            -
             
     | 
| 
       342 
     | 
    
         
            -
                result.should == expected
         
     | 
| 
       343 
     | 
    
         
            -
                result.total_entries.should == 4
         
     | 
| 
       344 
     | 
    
         
            -
              end
         
     | 
| 
       345 
     | 
    
         
            -
              
         
     | 
| 
       346 
283 
     | 
    
         
             
              describe "associations" do
         
     | 
| 
       347 
     | 
    
         
            -
                it "should paginate with include" do
         
     | 
| 
       348 
     | 
    
         
            -
                  project = projects(:active_record)
         
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
                  topics = project.topics
         
     | 
| 
       351 
     | 
    
         
            -
                  topics = topics.references(:replies) if topics.respond_to?(:references)
         
     | 
| 
       352 
     | 
    
         
            -
             
     | 
| 
       353 
     | 
    
         
            -
                  result = topics.paginate \
         
     | 
| 
       354 
     | 
    
         
            -
                    :page       => 1, 
         
     | 
| 
       355 
     | 
    
         
            -
                    :include    => :replies,  
         
     | 
| 
       356 
     | 
    
         
            -
                    :conditions => ["replies.content LIKE ?", 'Nice%'],
         
     | 
| 
       357 
     | 
    
         
            -
                    :per_page   => 10
         
     | 
| 
       358 
     | 
    
         
            -
             
     | 
| 
       359 
     | 
    
         
            -
                  topics = Topic
         
     | 
| 
       360 
     | 
    
         
            -
                  topics = topics.references(:replies) if topics.respond_to?(:references)
         
     | 
| 
       361 
     | 
    
         
            -
             
     | 
| 
       362 
     | 
    
         
            -
                  expected = topics.find :all,
         
     | 
| 
       363 
     | 
    
         
            -
                    :include    => 'replies', 
         
     | 
| 
       364 
     | 
    
         
            -
                    :conditions => ["project_id = ? AND replies.content LIKE ?", project.id, 'Nice%'],
         
     | 
| 
       365 
     | 
    
         
            -
                    :limit      => 10
         
     | 
| 
       366 
     | 
    
         
            -
             
     | 
| 
       367 
     | 
    
         
            -
                  result.should == expected
         
     | 
| 
       368 
     | 
    
         
            -
                end
         
     | 
| 
       369 
     | 
    
         
            -
             
     | 
| 
       370 
284 
     | 
    
         
             
                it "should paginate" do
         
     | 
| 
       371 
285 
     | 
    
         
             
                  dhh = users(:david)
         
     | 
| 
       372 
286 
     | 
    
         
             
                  expected_name_ordered = projects(:action_controller, :active_record)
         
     | 
| 
         @@ -375,7 +289,7 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       375 
289 
     | 
    
         
             
                  lambda {
         
     | 
| 
       376 
290 
     | 
    
         
             
                    # with association-specified order
         
     | 
| 
       377 
291 
     | 
    
         
             
                    result = ignore_deprecation {
         
     | 
| 
       378 
     | 
    
         
            -
                      dhh.projects.includes(:topics).paginate(:page => 1 
     | 
| 
      
 292 
     | 
    
         
            +
                      dhh.projects.includes(:topics).order('projects.name').paginate(:page => 1)
         
     | 
| 
       379 
293 
     | 
    
         
             
                    }
         
     | 
| 
       380 
294 
     | 
    
         
             
                    result.to_a.should == expected_name_ordered
         
     | 
| 
       381 
295 
     | 
    
         
             
                    result.total_entries.should == 2
         
     | 
| 
         @@ -417,7 +331,7 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       417 
331 
     | 
    
         
             
                join_sql = 'LEFT JOIN developers_projects ON users.id = developers_projects.developer_id'
         
     | 
| 
       418 
332 
     | 
    
         | 
| 
       419 
333 
     | 
    
         
             
                lambda {
         
     | 
| 
       420 
     | 
    
         
            -
                  result = Developer. 
     | 
| 
      
 334 
     | 
    
         
            +
                  result = Developer.where('developers_projects.project_id = 1').joins(join_sql).paginate(:page => 1)
         
     | 
| 
       421 
335 
     | 
    
         
             
                  result.to_a # trigger loading of records
         
     | 
| 
       422 
336 
     | 
    
         
             
                  result.size.should == 2
         
     | 
| 
       423 
337 
     | 
    
         
             
                  developer_names = result.map(&:name)
         
     | 
| 
         @@ -427,8 +341,7 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       427 
341 
     | 
    
         | 
| 
       428 
342 
     | 
    
         
             
                lambda {
         
     | 
| 
       429 
343 
     | 
    
         
             
                  expected = result.to_a
         
     | 
| 
       430 
     | 
    
         
            -
                  result = Developer.paginate(:page => 1 
     | 
| 
       431 
     | 
    
         
            -
                    :conditions => 'project_id = 1', :count => { :select => "users.id" }).to_a
         
     | 
| 
      
 344 
     | 
    
         
            +
                  result = Developer.where('developers_projects.project_id = 1').joins(join_sql).paginate(:page => 1)
         
     | 
| 
       432 
345 
     | 
    
         
             
                  result.should == expected
         
     | 
| 
       433 
346 
     | 
    
         
             
                  result.total_entries.should == 2
         
     | 
| 
       434 
347 
     | 
    
         
             
                }.should run_queries(1)
         
     | 
| 
         @@ -437,8 +350,8 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       437 
350 
     | 
    
         
             
              it "should paginate with group" do
         
     | 
| 
       438 
351 
     | 
    
         
             
                result = nil
         
     | 
| 
       439 
352 
     | 
    
         
             
                lambda {
         
     | 
| 
       440 
     | 
    
         
            -
                  result = Developer. 
     | 
| 
       441 
     | 
    
         
            -
                    : 
     | 
| 
      
 353 
     | 
    
         
            +
                  result = Developer.select('salary').order('salary').group('salary').
         
     | 
| 
      
 354 
     | 
    
         
            +
                    paginate(:page => 1, :per_page => 10).to_a
         
     | 
| 
       442 
355 
     | 
    
         
             
                }.should run_queries(1)
         
     | 
| 
       443 
356 
     | 
    
         | 
| 
       444 
357 
     | 
    
         
             
                expected = users(:david, :jamis, :dev_10, :poor_jamis).map(&:salary).sort
         
     | 
| 
         @@ -451,12 +364,6 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       451 
364 
     | 
    
         
             
                }.should raise_error(NoMethodError)
         
     | 
| 
       452 
365 
     | 
    
         
             
              end
         
     | 
| 
       453 
366 
     | 
    
         | 
| 
       454 
     | 
    
         
            -
              it "should paginate with_scope" do
         
     | 
| 
       455 
     | 
    
         
            -
                result = Developer.with_poor_ones { Developer.paginate :page => 1 }
         
     | 
| 
       456 
     | 
    
         
            -
                result.size.should == 2
         
     | 
| 
       457 
     | 
    
         
            -
                result.total_entries.should == 2
         
     | 
| 
       458 
     | 
    
         
            -
              end
         
     | 
| 
       459 
     | 
    
         
            -
             
     | 
| 
       460 
367 
     | 
    
         
             
              describe "scopes" do
         
     | 
| 
       461 
368 
     | 
    
         
             
                it "should paginate" do
         
     | 
| 
       462 
369 
     | 
    
         
             
                  result = Developer.poor.paginate :page => 1, :per_page => 1
         
     | 
| 
         @@ -496,12 +403,6 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       496 
403 
     | 
    
         
             
                end
         
     | 
| 
       497 
404 
     | 
    
         
             
              end
         
     | 
| 
       498 
405 
     | 
    
         | 
| 
       499 
     | 
    
         
            -
              it "should paginate with :readonly option" do
         
     | 
| 
       500 
     | 
    
         
            -
                lambda {
         
     | 
| 
       501 
     | 
    
         
            -
                  Developer.paginate :readonly => true, :page => 1
         
     | 
| 
       502 
     | 
    
         
            -
                }.should_not raise_error
         
     | 
| 
       503 
     | 
    
         
            -
              end
         
     | 
| 
       504 
     | 
    
         
            -
              
         
     | 
| 
       505 
406 
     | 
    
         
             
              it "should not paginate an array of IDs" do
         
     | 
| 
       506 
407 
     | 
    
         
             
                lambda {
         
     | 
| 
       507 
408 
     | 
    
         
             
                  Developer.paginate((1..8).to_a, :per_page => 3, :page => 2, :order => 'id')
         
     | 
| 
         @@ -514,64 +415,4 @@ describe WillPaginate::ActiveRecord do 
     | 
|
| 
       514 
415 
     | 
    
         
             
                  Project.page(307445734561825862)
         
     | 
| 
       515 
416 
     | 
    
         
             
                }.should raise_error(WillPaginate::InvalidPage, "invalid offset: 9223372036854775830")
         
     | 
| 
       516 
417 
     | 
    
         
             
              end
         
     | 
| 
       517 
     | 
    
         
            -
             
     | 
| 
       518 
     | 
    
         
            -
              protected
         
     | 
| 
       519 
     | 
    
         
            -
              
         
     | 
| 
       520 
     | 
    
         
            -
                def ignore_deprecation
         
     | 
| 
       521 
     | 
    
         
            -
                  ActiveSupport::Deprecation.silence { yield }
         
     | 
| 
       522 
     | 
    
         
            -
                end
         
     | 
| 
       523 
     | 
    
         
            -
             
     | 
| 
       524 
     | 
    
         
            -
                def run_queries(num)
         
     | 
| 
       525 
     | 
    
         
            -
                  QueryCountMatcher.new(num)
         
     | 
| 
       526 
     | 
    
         
            -
                end
         
     | 
| 
       527 
     | 
    
         
            -
             
     | 
| 
       528 
     | 
    
         
            -
                def show_queries(&block)
         
     | 
| 
       529 
     | 
    
         
            -
                  counter = QueryCountMatcher.new(nil)
         
     | 
| 
       530 
     | 
    
         
            -
                  counter.run block
         
     | 
| 
       531 
     | 
    
         
            -
                ensure
         
     | 
| 
       532 
     | 
    
         
            -
                  queries = counter.performed_queries
         
     | 
| 
       533 
     | 
    
         
            -
                  if queries.any?
         
     | 
| 
       534 
     | 
    
         
            -
                    puts queries
         
     | 
| 
       535 
     | 
    
         
            -
                  else
         
     | 
| 
       536 
     | 
    
         
            -
                    puts "no queries"
         
     | 
| 
       537 
     | 
    
         
            -
                  end
         
     | 
| 
       538 
     | 
    
         
            -
                end
         
     | 
| 
       539 
     | 
    
         
            -
             
     | 
| 
       540 
     | 
    
         
            -
            end
         
     | 
| 
       541 
     | 
    
         
            -
             
     | 
| 
       542 
     | 
    
         
            -
            class QueryCountMatcher
         
     | 
| 
       543 
     | 
    
         
            -
              def initialize(num)
         
     | 
| 
       544 
     | 
    
         
            -
                @expected_count = num
         
     | 
| 
       545 
     | 
    
         
            -
              end
         
     | 
| 
       546 
     | 
    
         
            -
             
     | 
| 
       547 
     | 
    
         
            -
              def matches?(block)
         
     | 
| 
       548 
     | 
    
         
            -
                run(block)
         
     | 
| 
       549 
     | 
    
         
            -
             
     | 
| 
       550 
     | 
    
         
            -
                if @expected_count.respond_to? :include?
         
     | 
| 
       551 
     | 
    
         
            -
                  @expected_count.include? @count
         
     | 
| 
       552 
     | 
    
         
            -
                else
         
     | 
| 
       553 
     | 
    
         
            -
                  @count == @expected_count
         
     | 
| 
       554 
     | 
    
         
            -
                end
         
     | 
| 
       555 
     | 
    
         
            -
              end
         
     | 
| 
       556 
     | 
    
         
            -
             
     | 
| 
       557 
     | 
    
         
            -
              def run(block)
         
     | 
| 
       558 
     | 
    
         
            -
                $query_count = 0
         
     | 
| 
       559 
     | 
    
         
            -
                $query_sql = []
         
     | 
| 
       560 
     | 
    
         
            -
                block.call
         
     | 
| 
       561 
     | 
    
         
            -
              ensure
         
     | 
| 
       562 
     | 
    
         
            -
                @queries = $query_sql.dup
         
     | 
| 
       563 
     | 
    
         
            -
                @count = $query_count
         
     | 
| 
       564 
     | 
    
         
            -
              end
         
     | 
| 
       565 
     | 
    
         
            -
             
     | 
| 
       566 
     | 
    
         
            -
              def performed_queries
         
     | 
| 
       567 
     | 
    
         
            -
                @queries
         
     | 
| 
       568 
     | 
    
         
            -
              end
         
     | 
| 
       569 
     | 
    
         
            -
             
     | 
| 
       570 
     | 
    
         
            -
              def failure_message
         
     | 
| 
       571 
     | 
    
         
            -
                "expected #{@expected_count} queries, got #{@count}\n#{@queries.join("\n")}"
         
     | 
| 
       572 
     | 
    
         
            -
              end
         
     | 
| 
       573 
     | 
    
         
            -
             
     | 
| 
       574 
     | 
    
         
            -
              def negative_failure_message
         
     | 
| 
       575 
     | 
    
         
            -
                "expected query count not to be #{@expected_count}"
         
     | 
| 
       576 
     | 
    
         
            -
              end
         
     | 
| 
       577 
     | 
    
         
            -
            end
         
     | 
| 
      
 418 
     | 
    
         
            +
             end
         
     | 
| 
         @@ -80,6 +80,19 @@ describe WillPaginate::DataMapper do 
     | 
|
| 
       80 
80 
     | 
    
         
             
                Animal.all(:conditions => ['1=2']).page(1).total_pages.should == 1
         
     | 
| 
       81 
81 
     | 
    
         
             
              end
         
     | 
| 
       82 
82 
     | 
    
         | 
| 
      
 83 
     | 
    
         
            +
              it "overrides total_entries count with a fixed value" do
         
     | 
| 
      
 84 
     | 
    
         
            +
                lambda {
         
     | 
| 
      
 85 
     | 
    
         
            +
                  animals = Animal.paginate :page => 1, :per_page => 3, :total_entries => 999
         
     | 
| 
      
 86 
     | 
    
         
            +
                  animals.total_entries.should == 999
         
     | 
| 
      
 87 
     | 
    
         
            +
                }.should run_queries(0)
         
     | 
| 
      
 88 
     | 
    
         
            +
              end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
              it "supports a non-int for total_entries" do
         
     | 
| 
      
 91 
     | 
    
         
            +
                topics = Animal.paginate :page => 1, :per_page => 3, :total_entries => "999"
         
     | 
| 
      
 92 
     | 
    
         
            +
                topics.total_entries.should == 999
         
     | 
| 
      
 93 
     | 
    
         
            +
              end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
       83 
96 
     | 
    
         
             
              it "can iterate and then call WP methods" do
         
     | 
| 
       84 
97 
     | 
    
         
             
                animals = Animal.all(:limit => 2).page(1)
         
     | 
| 
       85 
98 
     | 
    
         
             
                animals.each { |a| }
         
     | 
| 
         @@ -0,0 +1,140 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            begin
         
     | 
| 
      
 4 
     | 
    
         
            +
              require 'will_paginate/mongoid'
         
     | 
| 
      
 5 
     | 
    
         
            +
            rescue LoadError => error
         
     | 
| 
      
 6 
     | 
    
         
            +
              warn "Error running Mongoid specs: #{error.message}"
         
     | 
| 
      
 7 
     | 
    
         
            +
              mongoid_loaded = false
         
     | 
| 
      
 8 
     | 
    
         
            +
            else
         
     | 
| 
      
 9 
     | 
    
         
            +
              Mongoid.connect_to 'will_paginate_test'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              class MongoidModel
         
     | 
| 
      
 12 
     | 
    
         
            +
                include Mongoid::Document
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              mongoid_loaded = true
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            describe WillPaginate::Mongoid do
         
     | 
| 
      
 19 
     | 
    
         
            +
              before(:all) do
         
     | 
| 
      
 20 
     | 
    
         
            +
                MongoidModel.delete_all
         
     | 
| 
      
 21 
     | 
    
         
            +
                4.times { MongoidModel.create! }
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              let(:criteria) { MongoidModel.criteria }
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              describe "#page" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                it "should forward to the paginate method" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  criteria.expects(:paginate).with(:page => 2).returns("itself")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  criteria.page(2).should == "itself"
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                it "should not override per_page if set earlier in the chain" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  criteria.paginate(:per_page => 10).page(1).per_page.should == 10
         
     | 
| 
      
 34 
     | 
    
         
            +
                  criteria.paginate(:per_page => 20).page(1).per_page.should == 20
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              describe "#per_page" do
         
     | 
| 
      
 39 
     | 
    
         
            +
                it "should set the limit if given an argument" do
         
     | 
| 
      
 40 
     | 
    
         
            +
                  criteria.per_page(10).options[:limit].should == 10
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                it "should return the current limit if no argument is given" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                  criteria.per_page.should == nil
         
     | 
| 
      
 45 
     | 
    
         
            +
                  criteria.per_page(10).per_page.should == 10
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                it "should be interchangable with limit" do
         
     | 
| 
      
 49 
     | 
    
         
            +
                  criteria.limit(15).per_page.should == 15
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                it "should be nil'able" do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  criteria.per_page(nil).per_page.should be_nil
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              describe "#paginate" do
         
     | 
| 
      
 58 
     | 
    
         
            +
                it "should use criteria" do
         
     | 
| 
      
 59 
     | 
    
         
            +
                  criteria.paginate.should be_instance_of(::Mongoid::Criteria)
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                it "should not override page number if set earlier in the chain" do
         
     | 
| 
      
 63 
     | 
    
         
            +
                  criteria.page(3).paginate.current_page.should == 3
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                it "should limit according to per_page parameter" do
         
     | 
| 
      
 67 
     | 
    
         
            +
                  criteria.paginate(:per_page => 10).options.should include(:limit => 10)
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                it "should skip according to page and per_page parameters" do
         
     | 
| 
      
 71 
     | 
    
         
            +
                  criteria.paginate(:page => 2, :per_page => 5).options.should include(:skip => 5)
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                specify "first fallback value for per_page option is the current limit" do
         
     | 
| 
      
 75 
     | 
    
         
            +
                  criteria.limit(12).paginate.options.should include(:limit => 12)
         
     | 
| 
      
 76 
     | 
    
         
            +
                end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                specify "second fallback value for per_page option is WillPaginate.per_page" do
         
     | 
| 
      
 79 
     | 
    
         
            +
                  criteria.paginate.options.should include(:limit => WillPaginate.per_page)
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                specify "page should default to 1" do
         
     | 
| 
      
 83 
     | 
    
         
            +
                  criteria.paginate.options.should include(:skip => 0)
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                it "should convert strings to integers" do
         
     | 
| 
      
 87 
     | 
    
         
            +
                  criteria.paginate(:page => "2", :per_page => "3").options.should include(:limit => 3)
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                describe "collection compatibility" do
         
     | 
| 
      
 91 
     | 
    
         
            +
                  describe "#total_count" do
         
     | 
| 
      
 92 
     | 
    
         
            +
                    it "should be calculated correctly" do
         
     | 
| 
      
 93 
     | 
    
         
            +
                      criteria.paginate(:per_page => 1).total_entries.should == 4
         
     | 
| 
      
 94 
     | 
    
         
            +
                      criteria.paginate(:per_page => 3).total_entries.should == 4
         
     | 
| 
      
 95 
     | 
    
         
            +
                    end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                    it "should be cached" do
         
     | 
| 
      
 98 
     | 
    
         
            +
                      criteria.expects(:count).once.returns(123)
         
     | 
| 
      
 99 
     | 
    
         
            +
                      criteria.paginate
         
     | 
| 
      
 100 
     | 
    
         
            +
                      2.times { criteria.total_entries.should == 123 }
         
     | 
| 
      
 101 
     | 
    
         
            +
                    end
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                  it "should calculate total_pages" do
         
     | 
| 
      
 105 
     | 
    
         
            +
                    criteria.paginate(:per_page => 1).total_pages.should == 4
         
     | 
| 
      
 106 
     | 
    
         
            +
                    criteria.paginate(:per_page => 3).total_pages.should == 2
         
     | 
| 
      
 107 
     | 
    
         
            +
                    criteria.paginate(:per_page => 10).total_pages.should == 1
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                  it "should return per_page" do
         
     | 
| 
      
 111 
     | 
    
         
            +
                    criteria.paginate(:per_page => 1).per_page.should == 1
         
     | 
| 
      
 112 
     | 
    
         
            +
                    criteria.paginate(:per_page => 5).per_page.should == 5
         
     | 
| 
      
 113 
     | 
    
         
            +
                  end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                  describe "#current_page" do
         
     | 
| 
      
 116 
     | 
    
         
            +
                    it "should return current_page" do
         
     | 
| 
      
 117 
     | 
    
         
            +
                      criteria.paginate(:page => 1).current_page.should == 1
         
     | 
| 
      
 118 
     | 
    
         
            +
                      criteria.paginate(:page => 3).current_page.should == 3
         
     | 
| 
      
 119 
     | 
    
         
            +
                    end
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                    it "should be casted to PageNumber" do
         
     | 
| 
      
 122 
     | 
    
         
            +
                      page = criteria.paginate(:page => 1).current_page
         
     | 
| 
      
 123 
     | 
    
         
            +
                      (page.instance_of? WillPaginate::PageNumber).should be
         
     | 
| 
      
 124 
     | 
    
         
            +
                    end
         
     | 
| 
      
 125 
     | 
    
         
            +
                  end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                  it "should return offset" do
         
     | 
| 
      
 128 
     | 
    
         
            +
                    criteria.paginate(:page => 1).offset.should == 0
         
     | 
| 
      
 129 
     | 
    
         
            +
                    criteria.paginate(:page => 2, :per_page => 5).offset.should == 5
         
     | 
| 
      
 130 
     | 
    
         
            +
                    criteria.paginate(:page => 3, :per_page => 10).offset.should == 20
         
     | 
| 
      
 131 
     | 
    
         
            +
                  end
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                  it "should not pollute plain mongoid criterias" do
         
     | 
| 
      
 134 
     | 
    
         
            +
                    %w(total_entries total_pages current_page).each do |method|
         
     | 
| 
      
 135 
     | 
    
         
            +
                      criteria.should_not respond_to(method)
         
     | 
| 
      
 136 
     | 
    
         
            +
                    end
         
     | 
| 
      
 137 
     | 
    
         
            +
                  end
         
     | 
| 
      
 138 
     | 
    
         
            +
                end
         
     | 
| 
      
 139 
     | 
    
         
            +
              end
         
     | 
| 
      
 140 
     | 
    
         
            +
            end if mongoid_loaded
         
     | 
    
        data/spec/fixtures/developer.rb
    CHANGED
    
    | 
         @@ -1,13 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class Developer < User
         
     | 
| 
       2 
2 
     | 
    
         
             
              has_and_belongs_to_many :projects, :join_table => 'developers_projects'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
              def self.with_poor_ones(&block)
         
     | 
| 
       5 
     | 
    
         
            -
                options = { :conditions => ['salary <= ?', 80000], :order => 'salary' }
         
     | 
| 
       6 
     | 
    
         
            -
                with_scope({ :find => options }, :overwrite) do
         
     | 
| 
       7 
     | 
    
         
            -
                  yield
         
     | 
| 
       8 
     | 
    
         
            -
                end
         
     | 
| 
       9 
     | 
    
         
            -
              end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
4 
     | 
    
         
             
              scope :poor, lambda {
         
     | 
| 
       12 
5 
     | 
    
         
             
                where(['salary <= ?', 80000]).order('salary')
         
     | 
| 
       13 
6 
     | 
    
         
             
              }
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -19,8 +19,28 @@ RSpec.configure do |config| 
     | 
|
| 
       19 
19 
     | 
    
         
             
                def have_deprecation(msg)
         
     | 
| 
       20 
20 
     | 
    
         
             
                  DeprecationMatcher.new(msg)
         
     | 
| 
       21 
21 
     | 
    
         
             
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def run_queries(num)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  QueryCountMatcher.new(num)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def ignore_deprecation
         
     | 
| 
      
 28 
     | 
    
         
            +
                  ActiveSupport::Deprecation.silence { yield }
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def show_queries(&block)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  counter = QueryCountMatcher.new(nil)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  counter.run block
         
     | 
| 
      
 34 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 35 
     | 
    
         
            +
                  queries = counter.performed_queries
         
     | 
| 
      
 36 
     | 
    
         
            +
                  if queries.any?
         
     | 
| 
      
 37 
     | 
    
         
            +
                    puts queries
         
     | 
| 
      
 38 
     | 
    
         
            +
                  else
         
     | 
| 
      
 39 
     | 
    
         
            +
                    puts "no queries"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
       22 
42 
     | 
    
         
             
              }
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
       24 
44 
     | 
    
         
             
              config.mock_with :mocha
         
     | 
| 
       25 
45 
     | 
    
         
             
              config.backtrace_clean_patterns << /view_example_group/
         
     | 
| 
       26 
46 
     | 
    
         
             
            end
         
     | 
| 
         @@ -80,9 +80,9 @@ describe WillPaginate::ActionView do 
     | 
|
| 
       80 
80 
     | 
    
         
             
                    validate_page_numbers [1,1,3,3], elements
         
     | 
| 
       81 
81 
     | 
    
         
             
                    # test rel attribute values:
         
     | 
| 
       82 
82 
     | 
    
         
             
                    text(elements[0]).should == 'Prev'
         
     | 
| 
       83 
     | 
    
         
            -
                    elements[0]['rel'].should == 'prev'
         
     | 
| 
      
 83 
     | 
    
         
            +
                    elements[0]['rel'].should == 'prev start'
         
     | 
| 
       84 
84 
     | 
    
         
             
                    text(elements[1]).should == '1'
         
     | 
| 
       85 
     | 
    
         
            -
                    elements[1]['rel'].should == 'prev'
         
     | 
| 
      
 85 
     | 
    
         
            +
                    elements[1]['rel'].should == 'prev start'
         
     | 
| 
       86 
86 
     | 
    
         
             
                    text(elements[3]).should == 'Next'
         
     | 
| 
       87 
87 
     | 
    
         
             
                    elements[3]['rel'].should == 'next'
         
     | 
| 
       88 
88 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -201,13 +201,6 @@ describe WillPaginate::ActionView do 
     | 
|
| 
       201 
201 
     | 
    
         
             
                assert_no_links_match /99/
         
     | 
| 
       202 
202 
     | 
    
         
             
                assert_no_links_match /ftp/
         
     | 
| 
       203 
203 
     | 
    
         
             
              end
         
     | 
| 
       204 
     | 
    
         
            -
             
     | 
| 
       205 
     | 
    
         
            -
              it "doesn't allow tampering with script_name" do
         
     | 
| 
       206 
     | 
    
         
            -
                request.params :script_name => 'p0wned', :original_script_name => 'p0wned'
         
     | 
| 
       207 
     | 
    
         
            -
                paginate
         
     | 
| 
       208 
     | 
    
         
            -
                assert_links_match %r{^/foo/bar}
         
     | 
| 
       209 
     | 
    
         
            -
                assert_no_links_match /p0wned/
         
     | 
| 
       210 
     | 
    
         
            -
              end
         
     | 
| 
       211 
204 
     | 
    
         | 
| 
       212 
205 
     | 
    
         
             
              it "should not preserve parameters on POST" do
         
     | 
| 
       213 
206 
     | 
    
         
             
                request.post
         
     | 
| 
         @@ -257,7 +250,7 @@ describe WillPaginate::ActionView do 
     | 
|
| 
       257 
250 
     | 
    
         
             
              end
         
     | 
| 
       258 
251 
     | 
    
         | 
| 
       259 
252 
     | 
    
         
             
              it "should paginate with custom route page parameter" do
         
     | 
| 
       260 
     | 
    
         
            -
                request.symbolized_path_parameters.update :controller => 'dummy', :action =>  
     | 
| 
      
 253 
     | 
    
         
            +
                request.symbolized_path_parameters.update :controller => 'dummy', :action => nil
         
     | 
| 
       261 
254 
     | 
    
         
             
                paginate :per_page => 2 do
         
     | 
| 
       262 
255 
     | 
    
         
             
                  assert_select 'a[href]', 6 do |links|
         
     | 
| 
       263 
256 
     | 
    
         
             
                    assert_links_match %r{/page/(\d+)$}, links, [2, 3, 4, 5, 6, 2]
         
     | 
| 
         @@ -275,7 +268,7 @@ describe WillPaginate::ActionView do 
     | 
|
| 
       275 
268 
     | 
    
         
             
              end
         
     | 
| 
       276 
269 
     | 
    
         | 
| 
       277 
270 
     | 
    
         
             
              it "should paginate with custom route and first page number implicit" do
         
     | 
| 
       278 
     | 
    
         
            -
                request.symbolized_path_parameters.update :controller => 'ibocorp', :action =>  
     | 
| 
      
 271 
     | 
    
         
            +
                request.symbolized_path_parameters.update :controller => 'ibocorp', :action => nil
         
     | 
| 
       279 
272 
     | 
    
         
             
                paginate :page => 2, :per_page => 2 do
         
     | 
| 
       280 
273 
     | 
    
         
             
                  assert_select 'a[href]', 7 do |links|
         
     | 
| 
       281 
274 
     | 
    
         
             
                    assert_links_match %r{/ibocorp(?:/(\d+))?$}, links, [nil, nil, 3, 4, 5, 6, 3]
         
     | 
| 
         @@ -27,7 +27,6 @@ module ViewExampleGroup 
     | 
|
| 
       27 
27 
     | 
    
         
             
              include MiniTest::Assertions if defined? MiniTest
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
              def assert(value, message)
         
     | 
| 
       30 
     | 
    
         
            -
                message = message.call if message.respond_to?(:call)
         
     | 
| 
       31 
30 
     | 
    
         
             
                raise message unless value
         
     | 
| 
       32 
31 
     | 
    
         
             
              end
         
     | 
| 
       33 
32 
     | 
    
         | 
| 
         @@ -144,4 +143,4 @@ module HTML 
     | 
|
| 
       144 
143 
     | 
    
         
             
                  childless?? '' : super
         
     | 
| 
       145 
144 
     | 
    
         
             
                end
         
     | 
| 
       146 
145 
     | 
    
         
             
              end
         
     | 
| 
       147 
     | 
    
         
            -
            end 
     | 
| 
      
 146 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: will_paginate
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3.0 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Mislav Marohnić
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-01-03 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: will_paginate provides a simple API for performing paginated queries
         
     | 
| 
       14 
14 
     | 
    
         
             
              with Active Record, DataMapper and Sequel, and includes helpers for rendering pagination
         
     | 
| 
         @@ -31,6 +31,7 @@ files: 
     | 
|
| 
       31 
31 
     | 
    
         
             
            - lib/will_paginate/deprecation.rb
         
     | 
| 
       32 
32 
     | 
    
         
             
            - lib/will_paginate/i18n.rb
         
     | 
| 
       33 
33 
     | 
    
         
             
            - lib/will_paginate/locale/en.yml
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/will_paginate/mongoid.rb
         
     | 
| 
       34 
35 
     | 
    
         
             
            - lib/will_paginate/page_number.rb
         
     | 
| 
       35 
36 
     | 
    
         
             
            - lib/will_paginate/per_page.rb
         
     | 
| 
       36 
37 
     | 
    
         
             
            - lib/will_paginate/railtie.rb
         
     | 
| 
         @@ -51,6 +52,7 @@ files: 
     | 
|
| 
       51 
52 
     | 
    
         
             
            - spec/finders/activerecord_test_connector.rb
         
     | 
| 
       52 
53 
     | 
    
         
             
            - spec/finders/data_mapper_spec.rb
         
     | 
| 
       53 
54 
     | 
    
         
             
            - spec/finders/data_mapper_test_connector.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - spec/finders/mongoid_spec.rb
         
     | 
| 
       54 
56 
     | 
    
         
             
            - spec/finders/sequel_spec.rb
         
     | 
| 
       55 
57 
     | 
    
         
             
            - spec/finders/sequel_test_connector.rb
         
     | 
| 
       56 
58 
     | 
    
         
             
            - spec/fixtures/admin.rb
         
     |