will_paginate 3.0.2 → 3.0.3

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.

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: