rails_exception_handler 1.2.1 → 1.3.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.
data/Gemfile.lock CHANGED
@@ -30,7 +30,7 @@ GEM
30
30
  activesupport (3.0.9)
31
31
  arel (2.0.10)
32
32
  builder (2.1.2)
33
- diff-lcs (1.1.2)
33
+ diff-lcs (1.1.3)
34
34
  erubis (2.6.6)
35
35
  abstract (>= 1.0.0)
36
36
  git (1.2.5)
@@ -39,6 +39,7 @@ GEM
39
39
  bundler (~> 1.0)
40
40
  git (>= 1.2.5)
41
41
  rake
42
+ json (1.6.4)
42
43
  mail (2.2.19)
43
44
  activesupport (>= 2.3.6)
44
45
  i18n (>= 0.4.0)
@@ -47,7 +48,7 @@ GEM
47
48
  mime-types (1.16)
48
49
  mysql2 (0.2.6)
49
50
  polyglot (0.3.1)
50
- rack (1.2.3)
51
+ rack (1.2.5)
51
52
  rack-mount (0.6.14)
52
53
  rack (>= 1.0.0)
53
54
  rack-test (0.5.7)
@@ -66,25 +67,26 @@ GEM
66
67
  rake (>= 0.8.7)
67
68
  rdoc (~> 3.4)
68
69
  thor (~> 0.14.4)
69
- rake (0.9.2)
70
- rdoc (3.8)
71
- rspec (2.6.0)
72
- rspec-core (~> 2.6.0)
73
- rspec-expectations (~> 2.6.0)
74
- rspec-mocks (~> 2.6.0)
75
- rspec-core (2.6.4)
76
- rspec-expectations (2.6.0)
70
+ rake (0.9.2.2)
71
+ rdoc (3.12)
72
+ json (~> 1.4)
73
+ rspec (2.8.0)
74
+ rspec-core (~> 2.8.0)
75
+ rspec-expectations (~> 2.8.0)
76
+ rspec-mocks (~> 2.8.0)
77
+ rspec-core (2.8.0)
78
+ rspec-expectations (2.8.0)
77
79
  diff-lcs (~> 1.1.2)
78
- rspec-mocks (2.6.0)
79
- rspec-rails (2.6.1)
80
- actionpack (~> 3.0)
81
- activesupport (~> 3.0)
82
- railties (~> 3.0)
83
- rspec (~> 2.6.0)
80
+ rspec-mocks (2.8.0)
81
+ rspec-rails (2.8.1)
82
+ actionpack (>= 3.0)
83
+ activesupport (>= 3.0)
84
+ railties (>= 3.0)
85
+ rspec (~> 2.8.0)
84
86
  thor (0.14.6)
85
87
  treetop (1.4.9)
86
88
  polyglot (>= 0.3.1)
87
- tzinfo (0.3.29)
89
+ tzinfo (0.3.31)
88
90
 
89
91
  PLATFORMS
90
92
  ruby
data/HISTORY CHANGED
@@ -1,6 +1,9 @@
1
1
  CHANGELOG
2
2
 
3
3
 
4
+ v1.3.0 - January 13th 2012
5
+ - Added filtering option for getting rid of 404s created by anonymous users
6
+
4
7
  v1.2.1 - September 19th 2011
5
8
  - Fixed a couple of issues that made the exception handler break if active record was not loaded
6
9
 
data/README.markdown CHANGED
@@ -4,7 +4,7 @@ This is an exception handler for Rails 3 built as Rack middleware. It enables yo
4
4
 
5
5
  ## Compatiblity
6
6
 
7
- The gem is tested against Rails 3.0.9. It does not work with Rails 2.
7
+ The gem should work with all versions of Rails 3. It does not work with Rails 2.
8
8
  See travis-ci for info on which rubies it is tested against:
9
9
  http://travis-ci.org/#!/Sharagoz/rails_exception_handler
10
10
 
@@ -26,6 +26,7 @@ RailsExceptionHandler.configure do |config|
26
26
  # config.filters = [ # No filters are enabled by default
27
27
  # :all_404s,
28
28
  # :no_referer_404s,
29
+ # :anon_404s,
29
30
  # {:user_agent_regxp => /\b(ApptusBot|TurnitinBot|DotBot|SiteBot)\b/i},
30
31
  # {:target_url_regxp => /\b(myphpadmin)\b/i}
31
32
  # ]
@@ -121,6 +122,14 @@ config.filters = [:all_404s]
121
122
  When turned on the following exceptions will no longer be stored: ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound
122
123
  Consider this a last resort. You will miss all "real" 404s when this is turned on, like broken redirections.
123
124
 
125
+ **:all_404s**
126
+
127
+ ```ruby
128
+ config.filters = [:anon_404s]
129
+ ```
130
+
131
+ When turned on the following exceptions will no longer be stored unless a user is logged in: ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound
132
+
124
133
  **:no_referer_404s**
125
134
 
126
135
  ```ruby
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.1
1
+ 1.3.0
@@ -40,6 +40,10 @@ class RailsExceptionHandler::Parser
40
40
  routing_errors.include?(@exception.class.to_s)
41
41
  end
42
42
 
43
+ def anon_user?
44
+ [nil,'Anonymous'].include?(user_info)
45
+ end
46
+
43
47
  private
44
48
 
45
49
  def blank_referer?
@@ -61,6 +65,10 @@ class RailsExceptionHandler::Parser
61
65
  routing_error? && blank_referer?
62
66
  end
63
67
 
68
+ def filter_anon_404s
69
+ routing_error? && anon_user?
70
+ end
71
+
64
72
  def filter_user_agent_regxp(regxp)
65
73
  result = relevant_info[:user_agent].match(regxp)
66
74
  result != nil
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{rails_exception_handler}
8
- s.version = "1.2.1"
7
+ s.name = "rails_exception_handler"
8
+ s.version = "1.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Sharagoz}]
12
- s.date = %q{2011-09-19}
13
- s.description = %q{}
14
- s.email = %q{contact@sharagoz.com}
11
+ s.authors = ["Sharagoz"]
12
+ s.date = "2012-01-13"
13
+ s.description = ""
14
+ s.email = "contact@sharagoz.com"
15
15
  s.extra_rdoc_files = [
16
16
  "README.markdown"
17
17
  ]
@@ -70,11 +70,11 @@ Gem::Specification.new do |s|
70
70
  "spec/unit/handler_spec.rb",
71
71
  "spec/unit/parser_spec.rb"
72
72
  ]
73
- s.homepage = %q{http://github.com/Sharagoz/rails_exception_handler}
74
- s.licenses = [%q{MIT}]
75
- s.require_paths = [%q{lib}]
76
- s.rubygems_version = %q{1.8.8}
77
- s.summary = %q{Exception Handling for Rails 3}
73
+ s.homepage = "http://github.com/Sharagoz/rails_exception_handler"
74
+ s.licenses = ["MIT"]
75
+ s.require_paths = ["lib"]
76
+ s.rubygems_version = "1.8.11"
77
+ s.summary = "Exception Handling for Rails 3"
78
78
 
79
79
  if s.respond_to? :specification_version then
80
80
  s.specification_version = 3
@@ -53,6 +53,7 @@ describe RailsExceptionHandler::Configuration do
53
53
  get "/home/view_error"
54
54
  ErrorMessage.count.should == 1
55
55
  end
56
+
56
57
  end
57
58
 
58
59
  describe ":user_agent_regxp" do
@@ -82,6 +83,41 @@ describe RailsExceptionHandler::Configuration do
82
83
  ErrorMessage.count.should == 1
83
84
  end
84
85
  end
86
+
87
+ describe ":anon_404s" do
88
+ it "should log a 404 from a logged in user" do
89
+ RailsExceptionHandler.configure do |config|
90
+ config.environments = [Rails.env.to_sym]
91
+ config.storage_strategies = [:active_record]
92
+ config.store_user_info = {:method => :current_user, :field => :login}
93
+ config.filters = [:anon_404s]
94
+ end
95
+ get "/incorrect_route"
96
+ ErrorMessage.count.should == 1
97
+ end
98
+
99
+ it "should filter 404s from anonymous users" do
100
+ RailsExceptionHandler.configure do |config|
101
+ config.environments = [Rails.env.to_sym]
102
+ config.storage_strategies = [:active_record]
103
+ config.store_user_info = {:method => :nil_user, :field => :login}
104
+ config.filters = [:anon_404s]
105
+ end
106
+ get "/incorrect_route"
107
+ ErrorMessage.count.should == 0
108
+ end
109
+
110
+ it "should not filter 500s from anonymous users" do
111
+ RailsExceptionHandler.configure do |config|
112
+ config.environments = [Rails.env.to_sym]
113
+ config.storage_strategies = [:active_record]
114
+ config.store_user_info = {:method => :nil_user, :field => :login}
115
+ config.filters = [:anon_404s]
116
+ end
117
+ get "/home/model_error"
118
+ ErrorMessage.count.should == 1
119
+ end
120
+ end
85
121
  end
86
122
 
87
123
  describe ".environments" do
@@ -9,4 +9,8 @@ class ApplicationController < ActionController::Base
9
9
  return mock
10
10
  end
11
11
 
12
+ def nil_user
13
+ return nil
14
+ end
15
+
12
16
  end
@@ -109,4 +109,28 @@ describe RailsExceptionHandler::Parser do
109
109
  parser.relevant_info[:user_info].should == nil
110
110
  end
111
111
  end
112
+
113
+ describe "anon_user?" do
114
+ it "should return true if user_info is nil" do
115
+ RailsExceptionHandler.configure {|config| config.store_user_info = false}
116
+ controller = mock(ApplicationController)
117
+ parser = create_parser(nil, nil, controller)
118
+ parser.anon_user?.should be_true
119
+ end
120
+
121
+ it "should return true if user_info is 'Anonymous'" do
122
+ RailsExceptionHandler.configure {|config| config.store_user_info = {:method => :current_user, :field => :login}}
123
+ controller = mock(ApplicationController, :current_user => nil)
124
+ parser = create_parser(nil, nil, controller)
125
+ parser.relevant_info[:user_info].should == 'Anonymous'
126
+ parser.anon_user?.should be_true
127
+ end
128
+
129
+ it "should return false if user info is present" do
130
+ RailsExceptionHandler.configure {|config| config.store_user_info = {:method => :current_user, :field => :login}}
131
+ controller = mock(ApplicationController, :current_user => mock(Object, :login => 'matz'))
132
+ parser = create_parser(nil, nil, controller)
133
+ parser.anon_user?.should be_false
134
+ end
135
+ end
112
136
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rails_exception_handler
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.2.1
5
+ version: 1.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Sharagoz
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-09-19 00:00:00 Z
13
+ date: 2012-01-13 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -152,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  requirements: []
153
153
 
154
154
  rubyforge_project:
155
- rubygems_version: 1.8.8
155
+ rubygems_version: 1.8.11
156
156
  signing_key:
157
157
  specification_version: 3
158
158
  summary: Exception Handling for Rails 3