will_paginate 3.0.2 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of will_paginate might be problematic. Click here for more details.

@@ -51,7 +51,9 @@ module WillPaginate
51
51
  if loaded? and @array.size < per_page and (current_page == 1 or @array.size > 0)
52
52
  offset + @array.size
53
53
  else
54
- clean_query = query.merge(:order => [])
54
+ # :reload prevents Collection.filter from being run, which
55
+ # would cause a stack overflow
56
+ clean_query = query.merge(:reload => true)
55
57
  # seems like the only way
56
58
  clean_query.instance_variable_set('@limit', nil)
57
59
  clean_query.instance_variable_set('@offset', 0)
@@ -61,9 +63,13 @@ module WillPaginate
61
63
  end
62
64
 
63
65
  def to_a
64
- ::WillPaginate::Collection.create(current_page, per_page) do |col|
65
- col.replace super
66
- col.total_entries ||= total_entries
66
+ if paginated?
67
+ ::WillPaginate::Collection.create(current_page, per_page) do |col|
68
+ col.replace super
69
+ col.total_entries ||= total_entries
70
+ end
71
+ else
72
+ super
67
73
  end
68
74
  end
69
75
 
@@ -25,7 +25,9 @@ module WillPaginate
25
25
  end
26
26
 
27
27
  def self.setup_actioncontroller
28
- ActionDispatch::ShowExceptions.send :include, ShowExceptionsPatch
28
+ ( defined?(ActionDispatch::ExceptionWrapper) ?
29
+ ActionDispatch::ExceptionWrapper : ActionDispatch::ShowExceptions
30
+ ).send :include, ShowExceptionsPatch
29
31
  ActionController::Base.extend ControllerRescuePatch
30
32
  end
31
33
 
@@ -39,13 +41,18 @@ module WillPaginate
39
41
  extend ActiveSupport::Concern
40
42
  included { alias_method_chain :status_code, :paginate }
41
43
  private
42
- def status_code_with_paginate(exception)
44
+ def status_code_with_paginate(exception = @exception)
43
45
  if exception.is_a?(WillPaginate::InvalidPage) or
44
46
  (exception.respond_to?(:original_exception) &&
45
47
  exception.original_exception.is_a?(WillPaginate::InvalidPage))
46
48
  Rack::Utils.status_code(:not_found)
47
49
  else
48
- status_code_without_paginate(exception)
50
+ original_method = method(:status_code_without_paginate)
51
+ if original_method.arity != 0
52
+ original_method.call(exception)
53
+ else
54
+ original_method.call()
55
+ end
49
56
  end
50
57
  end
51
58
  end
@@ -2,7 +2,7 @@ module WillPaginate #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
4
  MINOR = 0
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -279,7 +279,8 @@ describe WillPaginate::ActiveRecord do
279
279
  end
280
280
 
281
281
  it "should paginate with :conditions" do
282
- result = Topic.paginate :page => 1, :conditions => ["created_at > ?", 30.minutes.ago]
282
+ result = Topic.paginate :page => 1, :order => 'id ASC',
283
+ :conditions => ["created_at > ?", 30.minutes.ago]
283
284
  result.should == topics(:rails, :ar)
284
285
  result.total_pages.should == 1
285
286
  end
@@ -80,4 +80,24 @@ describe WillPaginate::DataMapper do
80
80
  Animal.all(:conditions => ['1=2']).page(1).total_pages.should == 1
81
81
  end
82
82
 
83
+ it "can iterate and then call WP methods" do
84
+ animals = Animal.all(:limit => 2).page(1)
85
+ animals.each { |a| }
86
+ animals.total_entries.should == 3
87
+ end
88
+
89
+ it "augments to_a to return a WP::Collection" do
90
+ animals = Animal.all(:limit => 2).page(1)
91
+ array = animals.to_a
92
+ array.size.should == 2
93
+ array.is_a? WillPaginate::Collection
94
+ array.current_page.should == 1
95
+ array.per_page.should == 2
96
+ end
97
+
98
+ it "doesn't have a problem assigning has-one-through relationship" do
99
+ human = Human.create :name => "Mislav"
100
+ human.pet = Animal.first
101
+ end
102
+
83
103
  end if datamapper_loaded
@@ -19,9 +19,34 @@ class Animal
19
19
  end
20
20
  end
21
21
 
22
+ class Ownership
23
+ include DataMapper::Resource
24
+
25
+ belongs_to :animal, :key => true
26
+ belongs_to :human, :key => true
27
+
28
+ def self.setup
29
+ end
30
+ end
31
+
32
+ class Human
33
+ include DataMapper::Resource
34
+
35
+ property :id, Serial
36
+ property :name, String
37
+
38
+ has n, :ownerships
39
+ has 1, :pet, :model => 'Animal', :through => :ownerships, :via => :animal
40
+
41
+ def self.setup
42
+ end
43
+ end
44
+
22
45
  # Load fixtures
23
- Animal.auto_migrate!
24
- Animal.setup
46
+ [Animal, Ownership, Human].each do |klass|
47
+ klass.auto_migrate!
48
+ klass.setup
49
+ end
25
50
 
26
51
  if 'irb' == $0
27
52
  DataMapper.logger.set_log($stdout, :debug)
metadata CHANGED
@@ -1,28 +1,26 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: will_paginate
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.3
4
5
  prerelease:
5
- version: 3.0.2
6
6
  platform: ruby
7
- authors:
8
- - "Mislav Marohni\xC4\x87"
7
+ authors:
8
+ - Mislav Marohnić
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-27 00:00:00 Z
12
+ date: 2012-01-31 00:00:00.000000000 Z
14
13
  dependencies: []
15
-
16
- description: will_paginate provides a simple API for performing paginated queries with Active Record, DataMapper and Sequel, and includes helpers for rendering pagination links in Rails, Sinatra and Merb web apps.
14
+ description: will_paginate provides a simple API for performing paginated queries
15
+ with Active Record, DataMapper and Sequel, and includes helpers for rendering pagination
16
+ links in Rails, Sinatra and Merb web apps.
17
17
  email: mislav.marohnic@gmail.com
18
18
  executables: []
19
-
20
19
  extensions: []
21
-
22
- extra_rdoc_files:
20
+ extra_rdoc_files:
23
21
  - README.md
24
22
  - LICENSE
25
- files:
23
+ files:
26
24
  - Rakefile
27
25
  - lib/will_paginate/active_record.rb
28
26
  - lib/will_paginate/array.rb
@@ -78,32 +76,30 @@ files:
78
76
  - LICENSE
79
77
  homepage: https://github.com/mislav/will_paginate/wiki
80
78
  licenses: []
81
-
82
79
  post_install_message:
83
- rdoc_options:
80
+ rdoc_options:
84
81
  - --main
85
82
  - README.md
86
83
  - --charset=UTF-8
87
- require_paths:
84
+ require_paths:
88
85
  - lib
89
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
90
87
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
95
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
93
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
101
98
  requirements: []
102
-
103
99
  rubyforge_project:
104
- rubygems_version: 1.8.8
100
+ rubygems_version: 1.8.12
105
101
  signing_key:
106
102
  specification_version: 3
107
103
  summary: Pagination plugin for web frameworks and other apps
108
104
  test_files: []
109
-
105
+ has_rdoc: