rails_exception_handler 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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