objectreload-pagination 0.1.7 → 0.1.8

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.7
1
+ 0.1.8
@@ -0,0 +1,16 @@
1
+ # When an exception happens inside a view, it is wrapped with an
2
+ # ActionView::TemplateError. The lookup for the rescue_with_handler
3
+ # then fails to find the handle for the original exception. This solution
4
+ # special cases the template error to look also at the wrapped exception
5
+ # and if there is a handler for that exception, then call it and ignore
6
+ # the wrapping.
7
+ module RescueWithHelper
8
+ def rescue_with_handler(exception)
9
+ if ((exception.class == ActionView::TemplateError) &&
10
+ (orig_exception = exception.original_exception) &&
11
+ (orig_handler = handler_for_rescue(orig_exception)))
12
+ exception = orig_exception
13
+ end
14
+ super(exception)
15
+ end
16
+ end
data/lib/pagination.rb CHANGED
@@ -2,6 +2,9 @@
2
2
  require 'active_record/base_extensions'
3
3
  require 'active_record/scope_extensions'
4
4
 
5
+ # Loads
6
+ require 'action_controller/rescue_with_helper'
7
+
5
8
  # Loads internal pagination classes
6
9
  require 'pagination/collection'
7
10
  require 'pagination/named_scope'
@@ -11,6 +14,11 @@ require 'pagination/view_helpers'
11
14
  # Loads the :paginate view helper
12
15
  ActionView::Base.send :include, Pagination::ViewHelpers
13
16
 
14
- if defined?(ActionController::Base) and ActionController::Base.respond_to? :rescue_responses
15
- ActionController::Base.rescue_responses['Pagination::InvalidPage'] = :not_found
17
+ # Load :rescue_with_handler - solution: https://rails.lighthouseapp.com/projects/8994/tickets/2034-exceptions-in-views-hard-to-catch
18
+ ActionController::Base.send :include, RescueWithHelper
19
+
20
+ ActionController::Base.send(:rescue_from, Pagination::InvalidPage, :with => :not_found)
21
+
22
+ def not_found
23
+ render_optional_error_file 404
16
24
  end
@@ -57,10 +57,6 @@ class CollectionTest < Test::Unit::TestCase
57
57
  should "rise an error ArgumentError" do
58
58
  assert_raise(ArgumentError) { paginate_collection(@collection, 2, -2) }
59
59
  end
60
-
61
- should "test_rescue_response_hook_presence" do
62
- assert_equal :not_found, ActionController::Base.rescue_responses['Pagination::InvalidPage']
63
- end
64
60
  end
65
61
 
66
62
  context "collection is empty" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 7
9
- version: 0.1.7
8
+ - 8
9
+ version: 0.1.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mateusz Drozdzynski
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-01 00:00:00 +03:00
17
+ date: 2010-07-05 00:00:00 +03:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -35,6 +35,7 @@ files:
35
35
  - Rakefile
36
36
  - VERSION
37
37
  - init.rb
38
+ - lib/action_controller/rescue_with_helper.rb
38
39
  - lib/active_record/base_extensions.rb
39
40
  - lib/active_record/scope_extensions.rb
40
41
  - lib/pagination.rb