raygun4ruby 1.1.4 → 1.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 48b225693ce7d8b12ed42cf62c7ac62772631423
4
- data.tar.gz: 6a6d145569e18de22b0f6264ea124d5893a5bb28
3
+ metadata.gz: 7305d4c71a9380e59cb3dbb72a80ddc92eef5159
4
+ data.tar.gz: a7d9832f4983245ab09a21900b1c28f016f1a823
5
5
  SHA512:
6
- metadata.gz: 57fb50409b4dbcbeead76dc3306b2d5204652b0a3ec274c51ad7c8f2852300456af3b048cc03f3f964c2d9bace03640ad8a957b20f589977f7d4cb69ab7289f3
7
- data.tar.gz: f6ba6f88c324f94d72ae15acab093ce33c5a47e8020d97ca7ce67f9a315aa8c6241ce6cadd21b7536ae64e0149a48ce03e4005a1e8537b0855eaeda63f068030
6
+ metadata.gz: f7d0eeffeacca83f3e415369887d2e48ad8b142863a032f531b48a335acf1363776c138f482dd4efd7403059780c7d64d2ecf11e6cc62018872d7eb19c94d769
7
+ data.tar.gz: 1dfecde6867df5367dbc42dc0d07808df0234469bd8f321e53a36d729ddb1671d4431b12157e356f8cef96a4ec46c756e066540a40f932af09f3dba8ea20b8f0
data/README.md CHANGED
@@ -37,10 +37,24 @@ NB: Raygun4Ruby currently requires Ruby >= 1.9
37
37
 
38
38
  Note that the generator will create a file in `config/initializers` called "raygun.rb". If you need to do any further configuration or customization of Raygun, that's the place to do it!
39
39
 
40
+ By default the Rails integration is set to only report Exceptions in Production. To change this behaviour, set `config.enable_reporting` to something else in `config/initializers/raygun.rb`.
41
+
40
42
  ### Rails 2
41
43
 
42
44
  Raygun4Ruby doesn't currently support Rails 2. If you'd like Rails 2 support, [drop us a line](http://raygun.io/forums).
43
45
 
46
+ ### Sinatra
47
+
48
+ To enable exception tracking in Sinatra, just add configure Raygun and use the Rack middleware in your app:
49
+
50
+ ```
51
+ require 'raygun4ruby'
52
+ Raygun.setup do |config|
53
+ config.api_key = "YOUR_API_KEY_HERE"
54
+ end
55
+ use Raygun::Middleware::RackExceptionInterceptor
56
+ ```
57
+
44
58
  ###Standalone / Manual Exception Tracking
45
59
 
46
60
  ```ruby
@@ -51,6 +65,7 @@ require 'raygun4ruby'
51
65
  Raygun.setup do |config|
52
66
  config.api_key = "YOUR_RAYGUN_API_KEY"
53
67
  config.filter_parameters = [ :password, :card_number, :cvv ] # don't forget to filter out sensitive parameters
68
+ config.enable_reporting = Rails.env.production? # true to send errors, false to not log
54
69
  end
55
70
 
56
71
  begin
@@ -61,7 +76,20 @@ end
61
76
 
62
77
  ```
63
78
 
64
- (You can also pass a Hash as the second parameter to `track_exception`. It should look like a [Rack Env Hash](http://rack.rubyforge.org/doc/SPEC.html))
79
+ You can also pass a Hash as the second parameter to `track_exception`. It should look like a [Rack Env Hash](http://rack.rubyforge.org/doc/SPEC.html)
80
+
81
+ ### Customising Paremter Filtering
82
+
83
+ If you'd like to customize how parameters are filtered, you can pass a `Proc` to `filter_parameters`. Raygun4Ruby will yield the params hash to the block, and the return value will be sent along with your error.
84
+
85
+ ```ruby
86
+ Raygun.setup do |config|
87
+ config.api_key = "YOUR_RAYGUN_API_KEY"
88
+ config.filter_parameters do |params|
89
+ params.slice("only", "a", "few", "keys") # note that Hash#slice is in ActiveSupport
90
+ end
91
+ end
92
+ ```
65
93
 
66
94
  ###Custom User Data
67
95
  Custom data can be added to `track_exception` by passing a custom_data key in the second parameter hash.
@@ -87,7 +115,25 @@ Raygun.setup do |config|
87
115
  end
88
116
  ```
89
117
 
90
- You can also check which [exceptions are ignored by default](https://github.com/MindscapeHQ/raygun4ruby/blob/master/lib/raygun/configuration.rb#L26)
118
+ You can also check which [exceptions are ignored by default](https://github.com/MindscapeHQ/raygun4ruby/blob/master/lib/raygun/configuration.rb#L26) and unignore them if needed by doing the following:
119
+
120
+ ```ruby
121
+ Raygun.setup do |config|
122
+ config.api_key = "MY_SWEET_API_KEY"
123
+ config.ignore.delete('ActionController::InvalidAuthenticityToken')
124
+ end
125
+ ```
126
+
127
+ ###Using a Proxy
128
+
129
+ You can pass proxy settings using the `proxy_settings` config option.
130
+
131
+ ```ruby
132
+ Raygun.setup do |config|
133
+ config.api_key = "MY_SWEET_API_KEY"
134
+ config.proxy_settings = { host: "localhost", port: 8888 }
135
+ end
136
+ ```
91
137
 
92
138
  ###Affected User Tracking
93
139
 
@@ -15,6 +15,9 @@ module Raygun
15
15
  Raygun.setup do |config|
16
16
  config.api_key = "#{api_key}"
17
17
  #{filter_parameters}
18
+
19
+ # The default is Rails.env.production?
20
+ # config.enable_reporting = !Rails.env.development? && !Rails.env.test?
18
21
  end
19
22
  EOS
20
23
  end
data/lib/raygun/client.rb CHANGED
@@ -15,6 +15,8 @@ module Raygun
15
15
  @headers = {
16
16
  "X-ApiKey" => @api_key
17
17
  }
18
+
19
+ enable_http_proxy if Raygun.configuration.proxy_settings[:address]
18
20
  end
19
21
 
20
22
  def require_api_key!
@@ -27,6 +29,13 @@ module Raygun
27
29
 
28
30
  private
29
31
 
32
+ def enable_http_proxy
33
+ self.class.http_proxy(Raygun.configuration.proxy_settings[:address],
34
+ Raygun.configuration.proxy_settings[:port] || "80",
35
+ Raygun.configuration.proxy_settings[:username],
36
+ Raygun.configuration.proxy_settings[:password])
37
+ end
38
+
30
39
  def client_details
31
40
  {
32
41
  name: Raygun::CLIENT_NAME,
@@ -38,7 +47,7 @@ module Raygun
38
47
  def error_details(exception)
39
48
  {
40
49
  className: exception.class.to_s,
41
- message: exception.message.encode('UTF-16', :undef => :replace, :invalid => :replace).encode('UTF-8'),
50
+ message: exception.message.to_s.encode('UTF-16', :undef => :replace, :invalid => :replace).encode('UTF-8'),
42
51
  stackTrace: (exception.backtrace || []).map { |line| stack_trace_for(line) }
43
52
  }
44
53
  end
@@ -69,18 +78,25 @@ module Raygun
69
78
  !!env["raygun.affected_user"]
70
79
  end
71
80
 
81
+ def error_tags
82
+ [ENV["RACK_ENV"]]
83
+ end
84
+
85
+ def error_tags_present?
86
+ !!ENV["RACK_ENV"]
87
+ end
88
+
72
89
  def request_information(env)
73
90
  return {} if env.nil? || env.empty?
74
-
75
91
  {
76
92
  hostName: env["SERVER_NAME"],
77
93
  url: env["PATH_INFO"],
78
94
  httpMethod: env["REQUEST_METHOD"],
79
95
  iPAddress: "#{ip_address_from(env)}",
80
96
  queryString: Rack::Utils.parse_nested_query(env["QUERY_STRING"]),
81
- form: form_data(env),
82
97
  headers: headers(env),
83
- rawData: []
98
+ form: form_params(env),
99
+ rawData: raw_data(env)
84
100
  }
85
101
  end
86
102
 
@@ -98,10 +114,24 @@ module Raygun
98
114
  .sub(/ /, '-')
99
115
  end
100
116
 
101
- def form_data(rack_env)
117
+ def form_params(env)
118
+ params = action_dispatch_params(env) || rack_params(env) || {}
119
+ filter_params(params, env["action_dispatch.parameter_filter"])
120
+ end
121
+
122
+ def action_dispatch_params(env)
123
+ env["action_dispatch.request.parameters"]
124
+ end
125
+
126
+ def rack_params(env)
127
+ request = Rack::Request.new(env)
128
+ request.params if env["rack.input"]
129
+ end
130
+
131
+ def raw_data(rack_env)
102
132
  request = Rack::Request.new(rack_env)
103
- if request.form_data?
104
- filter_params(request.params, rack_env["action_dispatch.parameter_filter"])
133
+ unless request.form_data?
134
+ form_params(rack_env)
105
135
  end
106
136
  end
107
137
 
@@ -118,6 +148,7 @@ module Raygun
118
148
  request: request_information(env)
119
149
  }
120
150
 
151
+ error_details.merge!(tags: error_tags) if error_tags_present?
121
152
  error_details.merge!(user: user_information(env)) if affected_user_present?(env)
122
153
 
123
154
  {
@@ -131,13 +162,24 @@ module Raygun
131
162
  end
132
163
 
133
164
  def filter_params(params_hash, extra_filter_keys = nil)
134
- filter_keys = (Array(extra_filter_keys) + Raygun.configuration.filter_parameters).map(&:to_s)
165
+ if Raygun.configuration.filter_parameters.is_a?(Proc)
166
+ filter_params_with_proc(params_hash, Raygun.configuration.filter_parameters)
167
+ else
168
+ filter_keys = (Array(extra_filter_keys) + Raygun.configuration.filter_parameters).map(&:to_s)
169
+ filter_params_with_array(params_hash, filter_keys)
170
+ end
171
+ end
172
+
173
+ def filter_params_with_proc(params_hash, proc)
174
+ proc.call(params_hash)
175
+ end
135
176
 
177
+ def filter_params_with_array(params_hash, filter_keys)
136
178
  # Recursive filtering of (nested) hashes
137
- params_hash.inject({}) do |result, (k, v)|
179
+ (params_hash || {}).inject({}) do |result, (k, v)|
138
180
  result[k] = case v
139
181
  when Hash
140
- filter_params(v, extra_filter_keys)
182
+ filter_params_with_array(v, filter_keys)
141
183
  else
142
184
  filter_keys.include?(k) ? "[FILTERED]" : v
143
185
  end
@@ -149,6 +191,7 @@ module Raygun
149
191
  ENV_IP_ADDRESS_KEYS.each do |key_to_try|
150
192
  return env_hash[key_to_try] unless env_hash[key_to_try].nil? || env_hash[key_to_try] == ""
151
193
  end
194
+ "(Not Available)"
152
195
  end
153
196
 
154
197
  end
@@ -41,6 +41,9 @@ module Raygun
41
41
  # Which parameter keys should we filter out by default?
42
42
  config_option :filter_parameters
43
43
 
44
+ # Hash of proxy settings - :address, :port (defaults to 80), :username and :password (both default to nil)
45
+ config_option :proxy_settings
46
+
44
47
  # Exception classes to ignore by default
45
48
  IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound',
46
49
  'ActionController::RoutingError',
@@ -64,7 +67,8 @@ module Raygun
64
67
  enable_reporting: true,
65
68
  affected_user_method: :current_user,
66
69
  affected_user_identifier_methods: [ :email, :username, :id ],
67
- filter_parameters: DEFAULT_FILTER_PARAMETERS
70
+ filter_parameters: DEFAULT_FILTER_PARAMETERS,
71
+ proxy_settings: {}
68
72
  })
69
73
  end
70
74
 
@@ -84,6 +88,11 @@ module Raygun
84
88
  self.enable_reporting = !value
85
89
  end
86
90
 
91
+ def filter_parameters(&filter_proc)
92
+ set_value(:filter_parameters, filter_proc) if block_given?
93
+ read_value(:filter_parameters)
94
+ end
95
+
87
96
  private
88
97
 
89
98
  def read_value(name)
@@ -15,7 +15,7 @@ class Raygun::Railtie < Rails::Railtie
15
15
 
16
16
  # Affected User tracking
17
17
  require "raygun/middleware/rails_insert_affected_user"
18
- app.config.middleware.insert_after Raygun::Middleware::RackExceptionInterceptor, "Raygun::Middleware::RailsInsertAffectedUser"
18
+ app.config.middleware.insert_before Raygun::Middleware::RackExceptionInterceptor, "Raygun::Middleware::RailsInsertAffectedUser"
19
19
  end
20
20
 
21
21
  config.to_prepare do
@@ -1,3 +1,3 @@
1
1
  module Raygun
2
- VERSION = "1.1.4"
2
+ VERSION = "1.1.5"
3
3
  end
data/raygun4ruby.gemspec CHANGED
@@ -31,4 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "redis-namespace", ">= 1.3.1"
32
32
  spec.add_development_dependency "resque"
33
33
  spec.add_development_dependency "sidekiq", [">= 3", "< 3.2.2"]
34
+ spec.add_development_dependency "mocha"
34
35
  end
data/test/test_helper.rb CHANGED
@@ -1,8 +1,10 @@
1
+ ENV['RACK_ENV'] = 'test'
1
2
  require_relative "../lib/raygun.rb"
2
3
  require "minitest/autorun"
3
4
  require "minitest/pride"
4
5
  require "fakeweb"
5
6
  require "timecop"
7
+ require "mocha/mini_test"
6
8
 
7
9
  class NoApiKey < StandardError; end
8
10
 
@@ -44,4 +46,4 @@ class Raygun::UnitTest < MiniTest::Unit::TestCase
44
46
  Raygun.configuration = Raygun::Configuration.new
45
47
  end
46
48
 
47
- end
49
+ end
@@ -5,6 +5,11 @@ require 'stringio'
5
5
  class ClientTest < Raygun::UnitTest
6
6
 
7
7
  class TestException < StandardError; end
8
+ class NilMessageError < StandardError
9
+ def message
10
+ nil
11
+ end
12
+ end
8
13
 
9
14
  class FakeActionDispatcherIp
10
15
  attr_reader :ip
@@ -55,6 +60,12 @@ class ClientTest < Raygun::UnitTest
55
60
  assert_equal expected_hash, @client.send(:error_details, e)
56
61
  end
57
62
 
63
+ def test_error_details_with_nil_message
64
+ e = NilMessageError.new
65
+ expected_message = ""
66
+ assert_equal expected_message, @client.send(:error_details, e)[:message]
67
+ end
68
+
58
69
  def test_client_details
59
70
  expected_hash = {
60
71
  name: Raygun::CLIENT_NAME,
@@ -138,6 +149,7 @@ class ClientTest < Raygun::UnitTest
138
149
  ]
139
150
  },
140
151
  userCustomData: {},
152
+ tags: ["test"],
141
153
  request: {}
142
154
  }
143
155
  }
@@ -176,9 +188,9 @@ class ClientTest < Raygun::UnitTest
176
188
  httpMethod: "GET",
177
189
  iPAddress: "127.0.0.1",
178
190
  queryString: { "a" => "b", "c" => "4945438" },
179
- form: nil,
180
191
  headers: { "Version"=>"HTTP/1.1", "Host"=>"localhost:3000", "Connection"=>"keep-alive", "Cache-Control"=>"max-age=0", "Accept"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "User-Agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.22 Safari/537.36", "Accept-Encoding"=>"gzip,deflate,sdch", "Accept-Language"=>"en-US,en;q=0.8", "Cookie"=>"cookieval" },
181
- rawData: []
192
+ form: {},
193
+ rawData: {}
182
194
  }
183
195
 
184
196
  assert_equal expected_hash, @client.send(:request_information, sample_env_hash)
@@ -188,10 +200,10 @@ class ClientTest < Raygun::UnitTest
188
200
  assert_equal({}, @client.send(:request_information, nil))
189
201
  end
190
202
 
191
- def test_filtering_parameters
192
- post_body_env_hash = {
203
+ def test_non_form_parameters
204
+ put_body_env_hash = {
193
205
  "SERVER_NAME"=>"localhost",
194
- "REQUEST_METHOD"=>"POST",
206
+ "REQUEST_METHOD"=>"PUT",
195
207
  "REQUEST_PATH"=>"/",
196
208
  "PATH_INFO"=>"/",
197
209
  "QUERY_STRING"=>"",
@@ -210,44 +222,56 @@ class ClientTest < Raygun::UnitTest
210
222
  "SERVER_PROTOCOL"=>"HTTP/1.1",
211
223
  "SCRIPT_NAME"=>"",
212
224
  "REMOTE_ADDR"=>"127.0.0.1",
213
- "rack.input"=>StringIO.new("a=b&c=4945438&password=swordfish")
225
+ "action_dispatch.request.parameters"=> { "a" => "b", "c" => "4945438", "password" => "swordfish" }
214
226
  }
215
227
 
216
228
  expected_form_hash = { "a" => "b", "c" => "4945438", "password" => "[FILTERED]" }
217
229
 
230
+ assert_equal expected_form_hash, @client.send(:request_information, put_body_env_hash)[:rawData]
231
+ end
232
+
233
+ def test_filtering_parameters
234
+ post_body_env_hash = sample_env_hash.merge(
235
+ "rack.input"=>StringIO.new("a=b&c=4945438&password=swordfish")
236
+ )
237
+
238
+ expected_form_hash = { "a" => "b", "c" => "4945438", "password" => "[FILTERED]" }
239
+
218
240
  assert_equal expected_form_hash, @client.send(:request_information, post_body_env_hash)[:form]
219
241
  end
220
242
 
221
243
  def test_filtering_nested_params
222
- post_body_env_hash = {
223
- "SERVER_NAME"=>"localhost",
224
- "REQUEST_METHOD"=>"POST",
225
- "REQUEST_PATH"=>"/",
226
- "PATH_INFO"=>"/",
227
- "QUERY_STRING"=>"",
228
- "REQUEST_URI"=>"/",
229
- "HTTP_VERSION"=>"HTTP/1.1",
230
- "HTTP_HOST"=>"localhost:3000",
231
- "HTTP_CONNECTION"=>"keep-alive",
232
- "HTTP_CACHE_CONTROL"=>"max-age=0",
233
- "HTTP_ACCEPT"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
234
- "HTTP_USER_AGENT"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.22 Safari/537.36",
235
- "HTTP_ACCEPT_ENCODING"=>"gzip,deflate,sdch",
236
- "HTTP_ACCEPT_LANGUAGE"=>"en-US,en;q=0.8",
237
- "HTTP_COOKIE"=>"cookieval",
238
- "GATEWAY_INTERFACE"=>"CGI/1.2",
239
- "SERVER_PORT"=>"3000",
240
- "SERVER_PROTOCOL"=>"HTTP/1.1",
241
- "SCRIPT_NAME"=>"",
242
- "REMOTE_ADDR"=>"127.0.0.1",
243
- "rack.input"=>StringIO.new("a=b&bank%5Bcredit_card%5D%5Bcard_number%5D=my_secret_bank_number&bank%5Bname%5D=something&c=123456&user%5Bpassword%5D=my_fancy_password")
244
- }
244
+ post_body_env_hash = sample_env_hash.merge(
245
+ "rack.input" => StringIO.new("a=b&bank%5Bcredit_card%5D%5Bcard_number%5D=my_secret_bank_number&bank%5Bname%5D=something&c=123456&user%5Bpassword%5D=my_fancy_password")
246
+ )
245
247
 
246
248
  expected_form_hash = { "a" => "b", "bank" => { "credit_card" => { "card_number" => "[FILTERED]" }, "name" => "something" }, "c" => "123456", "user" => { "password" => "[FILTERED]" } }
247
249
 
248
250
  assert_equal expected_form_hash, @client.send(:request_information, post_body_env_hash)[:form]
249
251
  end
250
252
 
253
+ def test_filter_parameters_using_proc
254
+ # filter any parameters that start with "nsa_only"
255
+ Raygun.configuration.filter_parameters do |hash|
256
+ hash.inject({}) do |sanitized_hash, pair|
257
+ k, v = pair
258
+ v = "[OUREYESONLY]" if k[0...8] == "nsa_only"
259
+ sanitized_hash[k] = v
260
+ sanitized_hash
261
+ end
262
+ end
263
+
264
+ post_body_env_hash = sample_env_hash.merge(
265
+ "rack.input" => StringIO.new("nsa_only_info=123&nsa_only_metadata=seekrit&something_normal=hello")
266
+ )
267
+
268
+ expected_form_hash = { "nsa_only_info" => "[OUREYESONLY]", "nsa_only_metadata" => "[OUREYESONLY]", "something_normal" => "hello" }
269
+
270
+ assert_equal expected_form_hash, @client.send(:request_information, post_body_env_hash)[:form]
271
+ ensure
272
+ Raygun.configuration.filter_parameters = nil
273
+ end
274
+
251
275
  def test_ip_address_from_action_dispatch
252
276
  sample_env_hash = {
253
277
  "HTTP_VERSION"=>"HTTP/1.1",
@@ -270,6 +294,7 @@ class ClientTest < Raygun::UnitTest
270
294
  assert_equal "123.456.789.012", @client.send(:ip_address_from, sample_env_hash)
271
295
  assert_equal "123.456.789.012", @client.send(:request_information, sample_env_hash)[:iPAddress]
272
296
  end
297
+
273
298
  def test_ip_address_from_old_action_dispatch
274
299
  old_action_dispatch_ip = FakeActionDispatcherIp.new("123.456.789.012")
275
300
  sample_env_hash = {
@@ -317,4 +342,64 @@ class ClientTest < Raygun::UnitTest
317
342
  assert_equal "123.456.789.012", @client.send(:request_information, sample_env_hash)[:iPAddress]
318
343
  end
319
344
 
345
+ def test_ip_address_returns_not_available_if_not_set
346
+ sample_env_hash = {
347
+ "HTTP_VERSION"=>"HTTP/1.1",
348
+ "HTTP_HOST"=>"localhost:3000",
349
+ "HTTP_CONNECTION"=>"keep-alive",
350
+ "HTTP_CACHE_CONTROL"=>"max-age=0",
351
+ "HTTP_ACCEPT"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
352
+ "HTTP_USER_AGENT"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.22 Safari/537.36",
353
+ "HTTP_ACCEPT_ENCODING"=>"gzip,deflate,sdch",
354
+ "HTTP_ACCEPT_LANGUAGE"=>"en-US,en;q=0.8",
355
+ "HTTP_COOKIE"=>"cookieval",
356
+ "GATEWAY_INTERFACE"=>"CGI/1.2",
357
+ "SERVER_PORT"=>"3000",
358
+ "SERVER_PROTOCOL"=>"HTTP/1.1",
359
+ "SCRIPT_NAME"=>""
360
+ }
361
+
362
+ assert_equal "(Not Available)", @client.send(:ip_address_from, sample_env_hash)
363
+ end
364
+
365
+ def test_setting_up_http_proxy
366
+ begin
367
+ Raygun.configuration.proxy_settings[:address] = "http://proxy.com"
368
+ Raygun::Client.expects(:http_proxy).with("http://proxy.com", "80", nil, nil)
369
+
370
+ Raygun.track_exceptions do
371
+ raise TestException.new
372
+ end
373
+ ensure
374
+ Raygun.configuration.proxy_settings = {}
375
+ end
376
+ end
377
+
378
+ private
379
+
380
+ def sample_env_hash
381
+ {
382
+ "SERVER_NAME"=>"localhost",
383
+ "REQUEST_METHOD"=>"POST",
384
+ "REQUEST_PATH"=>"/",
385
+ "PATH_INFO"=>"/",
386
+ "QUERY_STRING"=>"",
387
+ "REQUEST_URI"=>"/",
388
+ "HTTP_VERSION"=>"HTTP/1.1",
389
+ "HTTP_HOST"=>"localhost:3000",
390
+ "HTTP_CONNECTION"=>"keep-alive",
391
+ "HTTP_CACHE_CONTROL"=>"max-age=0",
392
+ "HTTP_ACCEPT"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
393
+ "HTTP_USER_AGENT"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.22 Safari/537.36",
394
+ "HTTP_ACCEPT_ENCODING"=>"gzip,deflate,sdch",
395
+ "HTTP_ACCEPT_LANGUAGE"=>"en-US,en;q=0.8",
396
+ "HTTP_COOKIE"=>"cookieval",
397
+ "GATEWAY_INTERFACE"=>"CGI/1.2",
398
+ "SERVER_PORT"=>"3000",
399
+ "SERVER_PROTOCOL"=>"HTTP/1.1",
400
+ "SCRIPT_NAME"=>"",
401
+ "REMOTE_ADDR"=>"127.0.0.1"
402
+ }
403
+ end
404
+
320
405
  end
@@ -60,4 +60,16 @@ class ConfigurationTest < Raygun::UnitTest
60
60
  assert_equal({ sally: "stegosaurus" }, Raygun.configuration.custom_data)
61
61
  end
62
62
 
63
+ def test_setting_filter_paramters_to_proc
64
+ Raygun.setup do |config|
65
+ config.filter_parameters do |hash|
66
+ # Don't need to do anything :)
67
+ end
68
+ end
69
+
70
+ assert Raygun.configuration.filter_parameters.is_a?(Proc)
71
+ ensure
72
+ Raygun.configuration.filter_parameters = nil
73
+ end
74
+
63
75
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raygun4ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mindscape
@@ -9,168 +9,182 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-31 00:00:00.000000000 Z
12
+ date: 2015-01-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0.11'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0.11'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: json
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rack
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: bundler
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '1.1'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.1'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: fakeweb
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: '1.3'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '1.3'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: timecop
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '>='
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: minitest
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
118
  version: '4.2'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '4.2'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: redis-namespace
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: 1.3.1
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: 1.3.1
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: resque
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - '>='
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - '>='
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: sidekiq
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - '>='
158
+ - - ">="
159
159
  - !ruby/object:Gem::Version
160
160
  version: '3'
161
- - - <
161
+ - - "<"
162
162
  - !ruby/object:Gem::Version
163
163
  version: 3.2.2
164
164
  type: :development
165
165
  prerelease: false
166
166
  version_requirements: !ruby/object:Gem::Requirement
167
167
  requirements:
168
- - - '>='
168
+ - - ">="
169
169
  - !ruby/object:Gem::Version
170
170
  version: '3'
171
- - - <
171
+ - - "<"
172
172
  - !ruby/object:Gem::Version
173
173
  version: 3.2.2
174
+ - !ruby/object:Gem::Dependency
175
+ name: mocha
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
174
188
  description: Ruby Adapter for Raygun.io
175
189
  email:
176
190
  - hello@raygun.io
@@ -178,8 +192,8 @@ executables: []
178
192
  extensions: []
179
193
  extra_rdoc_files: []
180
194
  files:
181
- - .gitignore
182
- - .travis.yml
195
+ - ".gitignore"
196
+ - ".travis.yml"
183
197
  - Gemfile
184
198
  - LICENSE.txt
185
199
  - README.md
@@ -215,17 +229,17 @@ require_paths:
215
229
  - lib
216
230
  required_ruby_version: !ruby/object:Gem::Requirement
217
231
  requirements:
218
- - - '>='
232
+ - - ">="
219
233
  - !ruby/object:Gem::Version
220
234
  version: '0'
221
235
  required_rubygems_version: !ruby/object:Gem::Requirement
222
236
  requirements:
223
- - - '>='
237
+ - - ">="
224
238
  - !ruby/object:Gem::Version
225
239
  version: '0'
226
240
  requirements: []
227
241
  rubyforge_project:
228
- rubygems_version: 2.3.0
242
+ rubygems_version: 2.2.2
229
243
  signing_key:
230
244
  specification_version: 4
231
245
  summary: This gem provides support for Ruby and Ruby on Rails for the Raygun.io error