rails_exception_handler 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,9 +1,12 @@
1
+
1
2
  before_script:
2
- - "spec/dummy_30/script/setup"
3
+ - ./spec/dummy_32/script/setup
3
4
 
4
5
  notifications:
5
6
  disable: true
6
7
 
8
+ language: ruby
9
+
7
10
  rvm:
8
11
  - 1.9.3
9
12
  - 1.9.2
data/Gemfile CHANGED
@@ -1,15 +1,14 @@
1
- # A sample Gemfile
2
1
  source "http://rubygems.org"
3
2
 
4
3
  group :test, :development do
5
4
 
6
- gem "rails", '3.0.12'
7
- gem "rack-test", '0.5.7'
8
- gem "mysql2", '0.2.6'
5
+ #gem "rails", '3.0.12'
6
+ #gem "rack-test", '0.5.7'
7
+ #gem "mysql2", '0.2.6'
9
8
 
10
- #gem "rails", '3.2.2'
11
- #gem "rack-test", '0.6.1'
12
- #gem 'mysql2', '0.3.11'
9
+ gem "rails", '3.2.3'
10
+ gem "rack-test", '0.6.1'
11
+ gem 'mysql2', '0.3.11'
13
12
 
14
13
  gem 'pry'
15
14
  gem "rspec-rails"
data/Gemfile.lock CHANGED
@@ -1,84 +1,88 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails_exception_handler (1.4.0)
4
+ rails_exception_handler (2.0.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- abstract (1.0.0)
10
- actionmailer (3.0.12)
11
- actionpack (= 3.0.12)
12
- mail (~> 2.2.19)
13
- actionpack (3.0.12)
14
- activemodel (= 3.0.12)
15
- activesupport (= 3.0.12)
16
- builder (~> 2.1.2)
17
- erubis (~> 2.6.6)
18
- i18n (~> 0.5.0)
19
- rack (~> 1.2.5)
20
- rack-mount (~> 0.6.14)
21
- rack-test (~> 0.5.7)
22
- tzinfo (~> 0.3.23)
23
- activemodel (3.0.12)
24
- activesupport (= 3.0.12)
25
- builder (~> 2.1.2)
26
- i18n (~> 0.5.0)
27
- activerecord (3.0.12)
28
- activemodel (= 3.0.12)
29
- activesupport (= 3.0.12)
30
- arel (~> 2.0.10)
31
- tzinfo (~> 0.3.23)
32
- activeresource (3.0.12)
33
- activemodel (= 3.0.12)
34
- activesupport (= 3.0.12)
35
- activesupport (3.0.12)
36
- arel (2.0.10)
37
- builder (2.1.2)
9
+ actionmailer (3.2.3)
10
+ actionpack (= 3.2.3)
11
+ mail (~> 2.4.4)
12
+ actionpack (3.2.3)
13
+ activemodel (= 3.2.3)
14
+ activesupport (= 3.2.3)
15
+ builder (~> 3.0.0)
16
+ erubis (~> 2.7.0)
17
+ journey (~> 1.0.1)
18
+ rack (~> 1.4.0)
19
+ rack-cache (~> 1.2)
20
+ rack-test (~> 0.6.1)
21
+ sprockets (~> 2.1.2)
22
+ activemodel (3.2.3)
23
+ activesupport (= 3.2.3)
24
+ builder (~> 3.0.0)
25
+ activerecord (3.2.3)
26
+ activemodel (= 3.2.3)
27
+ activesupport (= 3.2.3)
28
+ arel (~> 3.0.2)
29
+ tzinfo (~> 0.3.29)
30
+ activeresource (3.2.3)
31
+ activemodel (= 3.2.3)
32
+ activesupport (= 3.2.3)
33
+ activesupport (3.2.3)
34
+ i18n (~> 0.6)
35
+ multi_json (~> 1.0)
36
+ arel (3.0.2)
37
+ builder (3.0.0)
38
38
  coderay (1.0.6)
39
39
  diff-lcs (1.1.3)
40
- erubis (2.6.6)
41
- abstract (>= 1.0.0)
40
+ erubis (2.7.0)
42
41
  git (1.2.5)
43
- i18n (0.5.0)
42
+ hike (1.2.1)
43
+ i18n (0.6.0)
44
44
  jeweler (1.8.3)
45
45
  bundler (~> 1.0)
46
46
  git (>= 1.2.5)
47
47
  rake
48
48
  rdoc
49
+ journey (1.0.3)
49
50
  json (1.7.3)
50
- mail (2.2.19)
51
- activesupport (>= 2.3.6)
51
+ mail (2.4.4)
52
52
  i18n (>= 0.4.0)
53
53
  mime-types (~> 1.16)
54
54
  treetop (~> 1.4.8)
55
55
  method_source (0.7.1)
56
56
  mime-types (1.18)
57
- mysql2 (0.2.6)
57
+ multi_json (1.3.5)
58
+ mysql2 (0.3.11)
58
59
  polyglot (0.3.3)
59
60
  pry (0.9.9.6)
60
61
  coderay (~> 1.0.5)
61
62
  method_source (~> 0.7.1)
62
63
  slop (>= 2.4.4, < 3)
63
- rack (1.2.5)
64
- rack-mount (0.6.14)
65
- rack (>= 1.0.0)
66
- rack-test (0.5.7)
64
+ rack (1.4.1)
65
+ rack-cache (1.2)
66
+ rack (>= 0.4)
67
+ rack-ssl (1.3.2)
68
+ rack
69
+ rack-test (0.6.1)
67
70
  rack (>= 1.0)
68
- rails (3.0.12)
69
- actionmailer (= 3.0.12)
70
- actionpack (= 3.0.12)
71
- activerecord (= 3.0.12)
72
- activeresource (= 3.0.12)
73
- activesupport (= 3.0.12)
71
+ rails (3.2.3)
72
+ actionmailer (= 3.2.3)
73
+ actionpack (= 3.2.3)
74
+ activerecord (= 3.2.3)
75
+ activeresource (= 3.2.3)
76
+ activesupport (= 3.2.3)
74
77
  bundler (~> 1.0)
75
- railties (= 3.0.12)
76
- railties (3.0.12)
77
- actionpack (= 3.0.12)
78
- activesupport (= 3.0.12)
78
+ railties (= 3.2.3)
79
+ railties (3.2.3)
80
+ actionpack (= 3.2.3)
81
+ activesupport (= 3.2.3)
82
+ rack-ssl (~> 1.3.2)
79
83
  rake (>= 0.8.7)
80
84
  rdoc (~> 3.4)
81
- thor (~> 0.14.4)
85
+ thor (~> 0.14.6)
82
86
  rake (0.9.2.2)
83
87
  rdoc (3.12)
84
88
  json (~> 1.4)
@@ -96,7 +100,12 @@ GEM
96
100
  railties (>= 3.0)
97
101
  rspec (~> 2.10.0)
98
102
  slop (2.4.4)
103
+ sprockets (2.1.3)
104
+ hike (~> 1.2)
105
+ rack (~> 1.0)
106
+ tilt (~> 1.1, != 1.3.0)
99
107
  thor (0.14.6)
108
+ tilt (1.3.3)
100
109
  treetop (1.4.10)
101
110
  polyglot
102
111
  polyglot (>= 0.3.1)
@@ -107,9 +116,9 @@ PLATFORMS
107
116
 
108
117
  DEPENDENCIES
109
118
  jeweler
110
- mysql2 (= 0.2.6)
119
+ mysql2 (= 0.3.11)
111
120
  pry
112
- rack-test (= 0.5.7)
113
- rails (= 3.0.12)
121
+ rack-test (= 0.6.1)
122
+ rails (= 3.2.3)
114
123
  rails_exception_handler!
115
124
  rspec-rails
data/HISTORY CHANGED
@@ -1,5 +1,12 @@
1
1
  CHANGELOG
2
2
 
3
+ v2.0.1 - May 2u7th 2012
4
+ - Fix ruby187 issue and a typo in the generator
5
+
6
+ v2.0.0 - May 15th 2012
7
+ - New API for specifying what information to store about the request, exception and environment
8
+ - Added a generator that creates an initializer
9
+
3
10
  v1.4.0 - March 10th 2012
4
11
  - Rails 3.2.2 fixes
5
12
  - Added after_initialize callback
data/README.markdown CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  Upgrading from version 1? [See wiki](https://github.com/Sharagoz/rails_exception_handler/wiki/Version-2.0-upgrade-instructions)
4
4
 
5
- This is a flexible exception handler for Rails 3 built as Rack middleware. It enables you to save the key information from the error message in a database somewhere and display a customized error message to the user within the applications layout file. You can hook this gem into all your rails apps and gather the exception reports in one place. This gem just contains the back end, you will have to create your own front end to view and manage the error reports.
5
+ This is a flexible exception handler for Rails 3 built as Rack middleware. It is aimed at experienced Rails developers who are administrating more than just a couple of rails applications. Dont be intimidated if you're new to rails though, it's not that hard to set up.
6
+
7
+ The exception handler enables you to save the key information from the error message in a database somewhere and display a customized error message to the user within the applications layout file. You can hook this exception handler into all your rails apps and gather the exception reports in one place. The exception handler just contains the back end, you will have to create your own front end to view and manage the error reports.
6
8
 
7
9
  Does your app have an authorization mechanism? [See wiki](https://github.com/Sharagoz/rails_exception_handler/wiki/Interaction-with-authorization-mechanisms)
8
10
 
@@ -11,6 +13,7 @@ Do you need to catch ruby errors outside of Rack? [See wiki](https://github.com/
11
13
  ## Compatiblity
12
14
 
13
15
  The gem should work with all versions of Rails 3. It does not work with Rails 2.
16
+
14
17
  See Travis-CI for info on which rubies it is tested against:
15
18
  http://travis-ci.org/#!/Sharagoz/rails_exception_handler
16
19
 
@@ -21,10 +24,15 @@ Add the line below to your gemfile and run bundler
21
24
  gem 'rails_exception_handler', "~> 2"
22
25
  ```
23
26
 
24
- Now run "rails g rails_exception_handler:install" to create an initializer in config/initializers/rails_exception_handler.rb
27
+ Generate an initializer:
28
+
29
+ ```
30
+ "rails g rails_exception_handler:install
31
+ ```
25
32
 
33
+ Open config/initializers/rails_exception_handler.rb, have a quick look and read on.
26
34
 
27
- ## Configuration options
35
+ ## Configuring the basics
28
36
 
29
37
  ### environments
30
38
  An array of symbols that says which Rails environments you want the exception handler to run in.
@@ -35,16 +43,6 @@ config.environments = [:production, :test, :development]
35
43
 
36
44
  Default value: [:production]
37
45
 
38
- ### storage_strategies
39
- An array of zero or more symbols that says which storage strategies you want to use. Each are explained in detail in separate sections at the end of this document.
40
-
41
- ```ruby
42
- config.storage_strategies = [:active_record, :rails_log, :remote_url => {:target => 'http://example.com'}]
43
- ```
44
-
45
- Default value: []
46
-
47
-
48
46
  ### fallback_layout
49
47
 
50
48
  ```ruby
@@ -55,23 +53,15 @@ Default value: 'application'
55
53
 
56
54
  The exception handler will always use the layout file of the controller action that was accessed when the error occured. However, when routing errors occures there are no controller action to get this layout from, so it falls back to the default 'application' layout that most apps have. If your application does not have a layout file called 'application', then you need to override this, otherwise a "missing layout" exception will occur.
57
55
 
58
- ### store_user_info
59
-
60
- Having some way of identifying the user can be very useful at times, so I always store information on who generated the exception in applications that have a log in feature.
61
- To enable this you need to specify the name of the controller method that provides the user object and the name of the field which contains the info you want to save.
62
-
63
- ```ruby
64
- config.store_user_info = {:method => :current_user, :field => :login}
65
- ```
56
+ ### after_initialize
66
57
 
67
- Default value: false (no info will be stored)
68
- If you turn this on and the error is generated by a client that is not logged in, then "Anonymous" will be used.
58
+ This is a callback that exists in case you need to do something right after the initializer has been run, for instance [interact with an authorization mechanism](https://github.com/Sharagoz/rails_exception_handler/wiki/Interaction-with-authorization-mechanisms)
69
59
 
70
60
  ### responses and response_mapping
71
61
 
72
62
  Note: public/500.html and public/400.html will be used if these exists. Remove these files before applying the configuration below.
73
63
 
74
- Create a set of responses and then map specific exceptions to these responses. There needs to be a response called :default which is used for the exceptions that are not explicity mapped to a response.
64
+ Create a set of responses and then map specific exceptions to these responses. There needs to be a response called :default which is used for the exceptions that are not explicitly mapped to a response.
75
65
 
76
66
  ```ruby
77
67
  config.responses = {
@@ -89,60 +79,9 @@ config.response_mapping = {
89
79
  }
90
80
  ```
91
81
 
92
- ### after_initialize
93
-
94
- This callback exists in case you need to do something right after the initializer has been run, for instance [interact with an authorization mechanism](https://github.com/Sharagoz/rails_exception_handler/wiki/Interaction-with-authorization-mechanisms)
82
+ # Gathering exception information
95
83
 
96
- ### filters
97
-
98
- All filters are disabled by default. I recommend you deploy your application this way, and then add filters as they become necessary.
99
- The only reason I've ever wanted filtering have been due to what seem like poorly programmed web crawlers and black bots probing for security holes. If legitimate web crawlers are a problem for you, look into tweaking your robots.txt file before enabling exception filters.
100
-
101
- **:all_404s**
102
-
103
- ```ruby
104
- config.filters = [:all_404s]
105
- ```
106
-
107
- When turned on the following exceptions will no longer be stored: ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound
108
- Consider this a last resort. You will miss all "real" 404s when this is turned on, like broken redirections.
109
-
110
- **:anon_404s**
111
-
112
- ```ruby
113
- config.filters = [:anon_404s]
114
- ```
115
-
116
- When turned on the following exceptions will no longer be stored unless a user is logged in: ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound
117
-
118
- **:no_referer_404s**
119
-
120
- ```ruby
121
- config.filters = [:no_referer_404s]
122
- ```
123
-
124
- ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound will be ignored if it was caused by a request without a referer.
125
- This is very effective against bots. 99.9% of the time a routing error with no referer will be caused by a bot, and then once in a while it will be caused by a real user that happened to generate an error on the first page he opened (like a broken bookmark). You will get a lot less false positives with this filter than :all_404s.
126
-
127
- **:user_agent_regxp**
128
-
129
- Legit software will usually add something to the user agent string to let you know who they are. You can use this to filter out the errors they generate, and be pretty sure you are not going to get any false positives.
130
-
131
- ```ruby
132
- config.filters = [:user_agent_regxp => /\b(ZyBorg|Yandex|Jyxobot)\b/i]
133
- ```
134
-
135
- If you (like me) dont know regular expressions by heart, then http://www.rubular.com/ is great tool to use when creating a regxp.
136
-
137
- **:target_url_regxp**
138
-
139
- Sometimes black bots add a common user agent string and a referer to their requests to cloak themselfs, which makes it hard to filter them without filtering all routing errors. What you can often do is to filter on what they target, which is usually security holes in some well known library/plugin (usually in php). The example below will filter out all URLs containing ".php". This is the filter I most commonly use myself. Without it, it is only a matter of time before I'll one day get 200 exceptions in 10mins caused by a bot looking for security holes in myPhpAdmin or some other PHP plugin.
140
-
141
- ```ruby
142
- config.filters = [:target_url_regxp => /\.php/i]
143
- ```
144
-
145
- ## Gathering exception information
84
+ Gathering and storing exception information is optional, but still the main purpose of this exception handler.
146
85
 
147
86
  The following for methods exists for extracting the information you need. You are given direct access to the relevant objects, which means full flexibility, but also more work on your part.
148
87
  The initializers contains a basic suggestion, you can check out [the wiki](https://github.com/Sharagoz/rails_exception_handler/wiki/Extracting-exception-info)
@@ -161,14 +100,31 @@ config.store_global_info do |storage|
161
100
  end
162
101
  ```
163
102
 
164
- ## Storage strategy - active record
103
+ ### store_user_info
104
+
105
+ Having some way of identifying the user can be very useful at times, so I always store information on who generated the exception in applications that have a log in feature.
106
+ Since extracting current_user from the environment variable takes a little bit of work, this helper method exists to make it easier. The user info are stored in a field called "user_info".
107
+
108
+ ```ruby
109
+ config.store_user_info = {:method => :current_user, :field => :login}
110
+ ```
111
+
112
+ Default value: false (no info will be stored)
113
+ If you turn this on and the error is generated by a client that is not logged in, then "Anonymous" will be used.
114
+
115
+ # Storing the exception
116
+
117
+ No storage strategies are enabled by default. You can enable more than one storage strategy.
118
+
119
+ ### Through active_record
120
+
165
121
  ```ruby
166
122
  config.storage_strategies = [:active_record]
167
123
  ```
168
- This means that the error reports will be stored through active record directly to a database, which is pretty much the whole reason why I created this library in the first place. A new entry called **exception_database** is needed in **database.yml**:
124
+ This means that the error reports will be stored through active record directly to a database. A new entry called **exception_database** is needed in **database.yml**:
125
+ For mysql the entry would look something like this:
169
126
 
170
127
  ```
171
- # for mysql the entry would look something like this:
172
128
  exception_database:
173
129
  adapter: mysql2
174
130
  encoding: utf8
@@ -180,7 +136,7 @@ exception_database:
180
136
  host: 127.0.0.1
181
137
  ```
182
138
 
183
- You could of course store the error messages in the same database as the application uses, but one of the main purposes of this library is to enable you to easily store error reports from many applications in the same database, so I recommend you set up a separate dedicated database for this.
139
+ You could of course store the error messages in the same database as the application uses, but one of the main purposes of this exception handler is to enable you to easily store error reports from many applications in the same database, so I recommend you set up a separate dedicated database for this.
184
140
 
185
141
  The exception database needs a table called **error_messages**. Here's a migration script that you can use to create the table with the necessary fields required for the default configuration:
186
142
 
@@ -209,7 +165,7 @@ class CreateErrorMessages < ActiveRecord::Migration
209
165
  end
210
166
  ```
211
167
 
212
- ## Storage strategy - rails log
168
+ ### Saving to the rails log
213
169
 
214
170
  ```ruby
215
171
  config.storage_strategies = [:rails_log]
@@ -231,22 +187,73 @@ activesupport (3.0.7) lib/active_support/notifications.rb:54:in `instrument'
231
187
  (the rest of the stack trace has been omitted from the example)
232
188
  ```
233
189
 
234
- ## Storage strategy - remote url
190
+ ### Sending the error report as an HTTP POST request to another application
191
+
235
192
  ```ruby
236
193
  config.storage_strategies = [:remote_url => {:target => 'http://example.com/error_messages'}]
237
194
  ```
195
+
238
196
  This option is meant for those who want to store the exception in a database table, but does not have direct access to the database itself, making active record store unsuitable. You need a web app on a server that has access to the database. An HTTP POST request will be sent to the specified URL with the error message as data.
239
197
  If you use a Rails app at the other end you should simply be able to do _ErrorMessage.create(params[:error_message])_ to save the report.
240
198
 
241
- ## Contributors
199
+ # Exception filters
200
+
201
+ Sometimes it is necessary to filter errors. All filters are disabled by default and I recommend you deploy your application this way initially, and then add filters as they become necessary.
202
+ The only reason I've ever wanted filtering have been due to what seem like poorly programmed web crawlers and black bots probing for security holes. If legitimate web crawlers are a problem for you, look into tweaking your robots.txt file before enabling exception filters.
203
+
204
+ ### :all_404s
205
+
206
+ ```ruby
207
+ config.filters = [:all_404s]
208
+ ```
209
+
210
+ When turned on the following exceptions will no longer be stored: ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound
211
+ Consider this a last resort. You will miss all "real" 404s when this is turned on, like broken redirections.
212
+
213
+ ### :anon_404s
214
+
215
+ ```ruby
216
+ config.filters = [:anon_404s]
217
+ ```
218
+
219
+ When turned on the following exceptions will no longer be stored unless a user is logged in: ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound
220
+
221
+ ### :no_referer_404s
222
+
223
+ ```ruby
224
+ config.filters = [:no_referer_404s]
225
+ ```
226
+
227
+ ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound will be ignored if it was caused by a request without a referer.
228
+ This is very effective against bots. 99.9% of the time a routing error with no referer will be caused by a bot, and then once in a while it will be caused by a real user that happened to generate an error on the first page he opened (like a broken bookmark). You will get a lot less false positives with this filter than :all_404s.
229
+
230
+ ### :user_agent_regxp
231
+
232
+ Legit software will usually add something to the user agent string to let you know who they are. You can use this to filter out the errors they generate, and be pretty sure you are not going to get any false positives.
233
+
234
+ ```ruby
235
+ config.filters = [:user_agent_regxp => /\b(ZyBorg|Yandex|Jyxobot)\b/i]
236
+ ```
237
+
238
+ If you (like me) dont know regular expressions by heart, then http://www.rubular.com/ is great tool to use when creating a regxp.
239
+
240
+ ### :target_url_regxp
241
+
242
+ Sometimes black bots add a common user agent string and a referer to their requests to cloak themselfs, which makes it hard to filter them without filtering all routing errors. What you can often do is to filter on what they target, which is usually security holes in some widely used library/plugin. The example below will filter out all URLs containing ".php". This is the filter I most commonly use myself. Without it, it is only a matter of time before I'll one day get 200 exceptions in 10mins caused by a bot looking for security holes in myPhpAdmin or some other PHP library.
243
+
244
+ ```ruby
245
+ config.filters = [:target_url_regxp => /\.php/i]
246
+ ```
247
+
248
+ # Contributors
242
249
 
243
- David Rice
250
+ David Rice and James Harrison
244
251
 
245
252
  Would you like to contribute? Here are some things on the todo list:
246
253
 
247
254
  * A mongoid storage strategy for those that wish to use MongoDB
248
255
  * An email storage strategy for those that wish to be notified of the exceptions through email
249
256
 
250
- ## Licence
257
+ # Licence
251
258
 
252
- Copyright © 2011 Bjørn Trondsen, released under the MIT license
259
+ Copyright © 2012 Bjørn Trondsen, released under the MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.0.1
@@ -32,7 +32,7 @@ RailsExceptionHandler.configure do |config|
32
32
  storage[:user_agent] = request.user_agent
33
33
  end
34
34
 
35
- config.store_exception_info do |storage,exeception|
35
+ config.store_exception_info do |storage,exception|
36
36
  storage[:class_name] = exception.class.to_s
37
37
  storage[:message] = exception.to_s
38
38
  storage[:trace] = exception.backtrace.join("\n")
@@ -6,7 +6,7 @@ class RailsExceptionHandler::Storage
6
6
  def self.rails_log(info)
7
7
  message = ""
8
8
  info.each do |key,val|
9
- message += "#{key.upcase}: #{val.to_s}\n"
9
+ message += "#{key.to_s.upcase}: #{val.to_s}\n"
10
10
  end
11
11
  Rails.logger.fatal(message)
12
12
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rails_exception_handler"
8
- s.version = "2.0.0"
8
+ s.version = "2.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sharagoz"]
12
- s.date = "2012-05-14"
12
+ s.date = "2012-05-27"
13
13
  s.description = ""
14
14
  s.email = "contact@sharagoz.com"
15
15
  s.extra_rdoc_files = [
@@ -59,26 +59,26 @@ Gem::Specification.new do |s|
59
59
  s.specification_version = 3
60
60
 
61
61
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
62
- s.add_development_dependency(%q<rails>, ["= 3.0.12"])
63
- s.add_development_dependency(%q<rack-test>, ["= 0.5.7"])
64
- s.add_development_dependency(%q<mysql2>, ["= 0.2.6"])
62
+ s.add_development_dependency(%q<rails>, ["= 3.2.3"])
63
+ s.add_development_dependency(%q<rack-test>, ["= 0.6.1"])
64
+ s.add_development_dependency(%q<mysql2>, ["= 0.3.11"])
65
65
  s.add_development_dependency(%q<pry>, [">= 0"])
66
66
  s.add_development_dependency(%q<rspec-rails>, [">= 0"])
67
67
  s.add_development_dependency(%q<jeweler>, [">= 0"])
68
68
  s.add_development_dependency(%q<rails_exception_handler>, [">= 0"])
69
69
  else
70
- s.add_dependency(%q<rails>, ["= 3.0.12"])
71
- s.add_dependency(%q<rack-test>, ["= 0.5.7"])
72
- s.add_dependency(%q<mysql2>, ["= 0.2.6"])
70
+ s.add_dependency(%q<rails>, ["= 3.2.3"])
71
+ s.add_dependency(%q<rack-test>, ["= 0.6.1"])
72
+ s.add_dependency(%q<mysql2>, ["= 0.3.11"])
73
73
  s.add_dependency(%q<pry>, [">= 0"])
74
74
  s.add_dependency(%q<rspec-rails>, [">= 0"])
75
75
  s.add_dependency(%q<jeweler>, [">= 0"])
76
76
  s.add_dependency(%q<rails_exception_handler>, [">= 0"])
77
77
  end
78
78
  else
79
- s.add_dependency(%q<rails>, ["= 3.0.12"])
80
- s.add_dependency(%q<rack-test>, ["= 0.5.7"])
81
- s.add_dependency(%q<mysql2>, ["= 0.2.6"])
79
+ s.add_dependency(%q<rails>, ["= 3.2.3"])
80
+ s.add_dependency(%q<rack-test>, ["= 0.6.1"])
81
+ s.add_dependency(%q<mysql2>, ["= 0.3.11"])
82
82
  s.add_dependency(%q<pry>, [">= 0"])
83
83
  s.add_dependency(%q<rspec-rails>, [">= 0"])
84
84
  s.add_dependency(%q<jeweler>, [">= 0"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_exception_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-14 00:00:00.000000000 Z
12
+ date: 2012-05-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 3.0.12
21
+ version: 3.2.3
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 3.0.12
29
+ version: 3.2.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rack-test
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - '='
36
36
  - !ruby/object:Gem::Version
37
- version: 0.5.7
37
+ version: 0.6.1
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - '='
44
44
  - !ruby/object:Gem::Version
45
- version: 0.5.7
45
+ version: 0.6.1
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: mysql2
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: 0.2.6
53
+ version: 0.3.11
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.6
61
+ version: 0.3.11
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: pry
64
64
  requirement: !ruby/object:Gem::Requirement