sentry-raven 0.9.4 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sentry-raven might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGNhZTllOWIxNjg1ZDNkZmMxMzBmNmJhZDEzNjliOGYyNzNiZDc1MQ==
5
- data.tar.gz: !binary |-
6
- ZWRjN2MyNTA2YzQ4ODliYTY0N2Y3ZTg3Y2MyNjUzMjYxODg0NWYzZg==
2
+ SHA1:
3
+ metadata.gz: 057d8d70d5fbf847fa8c41a33a8dabc5f4bf1f4d
4
+ data.tar.gz: 2042e4bbae25824369c260746f21c31b64d3c4f4
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDI3NWFlZjY2YjBjNjYxNTBlYjg5NWRmOWQ2OWRmYTZlY2RkYzIyNTg2NDRl
10
- NzZkYjQ0OTFiNjhmMmZlMzRiYzgyNWRkYjAzZWUzN2NlM2M3OGZiNDRlNzBk
11
- YjhmYWM0ZjlkNTU2YWE3NDkwMTM2M2RiNWJjMDIzNDA0NjAzMDU=
12
- data.tar.gz: !binary |-
13
- YmIzZDVlM2RhZDU3MzNiYmI2MDkxNTM0MmYxNTRhOTEwZTRkOTkyOWMxOWEx
14
- M2U4ZmQwN2MxOGM0NDYzYWZiY2Y1NmIxOTNkZTIyN2RiYTliMGVlNjU0NmUy
15
- MWFjZDgzYmEzYmNiZWU5ODFmNGY4NmQ0YmY5ZGRiNDg2MmM5YmE=
6
+ metadata.gz: a74a58c59287a2d4fde07886f26d9634e08f1b3b5bcf9c5c793facaec632094a83e047f426953a88b193911b71e4364fa541a0276b851f2dc86c1ea1a1aa7913
7
+ data.tar.gz: de5656fd29ce7aff1ad06c919179363f3330ff05cd4a7ab0ad17a733fb300d4468c2e3b487b4c9480abf9841d8ed28a928336d31d8df0d7d9a979c1f0cf9938b
data/README.md CHANGED
@@ -25,7 +25,15 @@ the Rack middleware). If you catch those exceptions yourself, but still want to
25
25
 
26
26
  ### Rails 3 or 4
27
27
 
28
- In Rails 3 or 4 all uncaught exceptions will be automatically reported.
28
+ In Rails 3 or 4 all uncaught exceptions will be automatically reported under most situations.
29
+
30
+ You'll still want to ensure you've disabled anything that would prevent errors from being propagated to the ```Raven::Rack``` middleware:
31
+
32
+ Disable ```ActionDispatch::ShowExceptions```:
33
+
34
+ ```ruby
35
+ config.action_dispatch.show_exceptions = false
36
+ ```
29
37
 
30
38
  #### Delayed::Job
31
39
 
@@ -175,9 +183,11 @@ end
175
183
 
176
184
  ### Environments
177
185
 
178
- By default events will be sent to Sentry in all environments except 'test', 'development', and 'cucumber'.
186
+ By default, events will be sent to Sentry in all environments. If you do not wish
187
+ to send events in an environment, we suggest you unset the ```SENTRY_DSN```
188
+ variable in that environment.
179
189
 
180
- You can configure Raven to run only in certain environments by configuring the `environments` whitelist. For example, to only run Sentry in production:
190
+ Alternately, you can configure Raven to run only in certain environments by configuring the `environments` whitelist. For example, to only run Sentry in production:
181
191
 
182
192
  ```ruby
183
193
  Raven.configure do |config|
@@ -233,7 +243,7 @@ end
233
243
 
234
244
  ### Asynchronous Delivery
235
245
 
236
- When an error occurs, the notification is immediately sent to Sentry. Raven can be configured
246
+ When an error occurs, the notification is immediately sent to Sentry. Raven can be configured
237
247
  to send notifications asynchronously:
238
248
 
239
249
  ```ruby
@@ -244,7 +254,7 @@ Raven.configure do |config|
244
254
  end
245
255
  ```
246
256
 
247
- This example uses a thread, but other tools can be used (GirlFriday, Resque, Sidekiq, etc...) as
257
+ This example uses a thread, but other tools can be used (GirlFriday, Resque, Sidekiq, etc...) as
248
258
  long as the `event` argument is eventually passed to `Raven.send`.
249
259
 
250
260
  ### Logging
@@ -261,6 +271,35 @@ Raven.configure do |config|
261
271
  end
262
272
  ```
263
273
 
274
+ If you are using Rails, Raven will default to using Rails.logger as the logger.
275
+
276
+ ### Encoding
277
+
278
+ While unlikely that you'll need to change it, by default Raven compresses outgoing messages with gzip. This has a slight impact on performance, but due to the size of many Ruby stacktrace it's required for the serve to accept the content.
279
+
280
+ To disable gzip, set the encoding to 'json':
281
+
282
+ ```ruby
283
+ Raven.configure do |config|
284
+ config.encoding = 'json'
285
+ end
286
+ ```
287
+
288
+ ### Silencing the ready message
289
+
290
+ Upon start, Raven will write the following message to the log at the INFO level:
291
+
292
+ ** [out :: hostname.example.com] I, [2014-07-22T15:32:57.498368 #30897] INFO -- : ** [Raven] Raven 0.9.4 ready to catch errors"
293
+
294
+ You can turn off this message by passing `true` to `Raven.configure`
295
+
296
+ ```ruby
297
+ Raven.configure(true) do |config|
298
+ ...
299
+ end
300
+ ```
301
+
302
+
264
303
  ## Sanitizing Data (Processors)
265
304
 
266
305
  If you need to sanitize or pre-process (before its sent to the server) data, you can do so using the Processors
@@ -0,0 +1,44 @@
1
+ require 'set'
2
+
3
+ module Raven
4
+ module BetterAttrAccessor
5
+
6
+ def attributes
7
+ Hash[
8
+ self.class.attributes.map do |attr|
9
+ [attr, send(attr)]
10
+ end
11
+ ]
12
+ end
13
+
14
+ def self.included(base)
15
+ base.extend ClassMethods
16
+ end
17
+
18
+ module ClassMethods
19
+ def attributes
20
+ @attributes ||= Set.new
21
+
22
+ if superclass.include? BetterAttrAccessor
23
+ @attributes + superclass.attributes
24
+ else
25
+ @attributes
26
+ end
27
+ end
28
+
29
+ def attr_accessor(attr, options = {})
30
+ @attributes ||= Set.new
31
+ @attributes << attr.to_s
32
+
33
+ define_method attr do
34
+ if instance_variable_defined? "@#{attr}"
35
+ instance_variable_get "@#{attr}"
36
+ elsif options.key? :default
37
+ instance_variable_set "@#{attr}", options[:default].dup
38
+ end
39
+ end
40
+ attr_writer attr
41
+ end
42
+ end
43
+ end
44
+ end
@@ -12,7 +12,7 @@ module Raven
12
12
  end
13
13
 
14
14
  Raven.configuration.logger = logger
15
-
15
+ Raven.configuration.timeout = 5
16
16
  Raven.configuration.dsn = dsn if dsn
17
17
 
18
18
  # wipe out env settings to ensure we send the event
@@ -59,7 +59,7 @@ module Raven
59
59
  case self.configuration.encoding
60
60
  when 'gzip'
61
61
  gzipped = Zlib::Deflate.deflate(encoded)
62
- b64_encoded = Base64.strict_encode64(gzipped)
62
+ b64_encoded = strict_encode64(gzipped)
63
63
  return 'application/octet-stream', b64_encoded
64
64
  else
65
65
  return 'application/json', encoded
@@ -89,5 +89,16 @@ module Raven
89
89
  }
90
90
  'Sentry ' + fields.map { |key, value| "#{key}=#{value}" }.join(', ')
91
91
  end
92
+
93
+ private
94
+
95
+ def strict_encode64(string)
96
+ if Base64.respond_to? :strict_encode64
97
+ Base64.strict_encode64 string
98
+ else # Ruby 1.8
99
+ Base64.encode64(string)[0..-2]
100
+ end
101
+ end
102
+
92
103
  end
93
104
  end
@@ -76,6 +76,10 @@ module Raven
76
76
  # Exceptions from these directories to be ignored
77
77
  attr_accessor :app_dirs_pattern
78
78
 
79
+ # Catch exceptions before they're been processed by
80
+ # ActionDispatch::ShowExceptions or ActionDispatch::DebugExceptions
81
+ attr_accessor :catch_debugged_exceptions
82
+
79
83
  IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound',
80
84
  'ActionController::RoutingError',
81
85
  'ActionController::InvalidAuthenticityToken',
@@ -92,11 +96,12 @@ module Raven
92
96
  self.excluded_exceptions = IGNORE_DEFAULT
93
97
  self.processors = [Raven::Processor::SanitizeData]
94
98
  self.ssl_verification = false
95
- self.encoding = 'json'
99
+ self.encoding = 'gzip'
96
100
  self.timeout = 1
97
101
  self.open_timeout = 1
98
102
  self.tags = {}
99
103
  self.async = false
104
+ self.catch_debugged_exceptions = true
100
105
  end
101
106
 
102
107
  def server=(value)
@@ -150,7 +155,7 @@ module Raven
150
155
  if environments
151
156
  environments.include?(current_environment)
152
157
  else
153
- !%w[test cucumber development].include?(current_environment)
158
+ true
154
159
  end
155
160
  end
156
161
 
@@ -1,39 +1,23 @@
1
- require 'hashie'
1
+ require 'raven/better_attr_accessor'
2
2
 
3
3
  module Raven
4
4
 
5
5
  INTERFACES = {}
6
6
 
7
- class Interface < Hashie::Dash
8
- if defined?(Hashie::Extensions::Dash::IndifferentAccess)
9
- include Hashie::Extensions::Dash::IndifferentAccess
10
- end
11
-
12
- def initialize(attributes = {}, &block)
13
- @check_required = false
14
- super(attributes)
15
- block.call(self) if block
16
- @check_required = true
17
-
18
- begin
19
- assert_required_attributes_set!
20
- rescue NoMethodError
21
- assert_required_properties_set!
22
- end
7
+ class Interface
8
+ include BetterAttrAccessor
9
+ alias_method :to_hash, :attributes
23
10
 
24
- end
25
-
26
- def assert_required_attributes_set!
27
- super if @check_required
28
- end
11
+ def initialize(attributes = nil)
12
+ attributes.each do |attr, value|
13
+ send "#{attr}=", value
14
+ end if attributes
29
15
 
30
- def assert_required_properties_set!
31
- super if @check_required
16
+ yield self if block_given?
32
17
  end
33
18
 
34
19
  def self.name(value = nil)
35
- @interface_name = value if value
36
- @interface_name
20
+ @interface_name ||= value
37
21
  end
38
22
  end
39
23
 
@@ -4,10 +4,10 @@ module Raven
4
4
  class ExceptionInterface < Interface
5
5
 
6
6
  name 'exception'
7
- property :type, :required => true
8
- property :value, :required => true
9
- property :module
10
- property :stacktrace
7
+ attr_accessor :type
8
+ attr_accessor :value
9
+ attr_accessor :module
10
+ attr_accessor :stacktrace
11
11
 
12
12
  def to_hash(*args)
13
13
  data = super(*args)
@@ -4,13 +4,13 @@ module Raven
4
4
  class HttpInterface < Interface
5
5
 
6
6
  name 'request'
7
- property :url, :required => true
8
- property :method, :required => true
9
- property :data
10
- property :query_string
11
- property :cookies
12
- property :headers
13
- property :env
7
+ attr_accessor :url
8
+ attr_accessor :method
9
+ attr_accessor :data
10
+ attr_accessor :query_string
11
+ attr_accessor :cookies
12
+ attr_accessor :headers
13
+ attr_accessor :env
14
14
 
15
15
  def initialize(*arguments)
16
16
  self.headers = {}
@@ -4,8 +4,8 @@ module Raven
4
4
  class MessageInterface < Interface
5
5
 
6
6
  name 'sentry.interfaces.Message'
7
- property :message, :required => true
8
- property :params
7
+ attr_accessor :message
8
+ attr_accessor :params
9
9
 
10
10
  def initialize(*arguments)
11
11
  self.params = []
@@ -1,12 +1,10 @@
1
- require 'hashie'
2
-
3
1
  require 'raven/interfaces'
4
2
 
5
3
  module Raven
6
4
  class StacktraceInterface < Interface
7
5
 
8
6
  name 'stacktrace'
9
- property :frames, :default => []
7
+ attr_accessor :frames, :default => []
10
8
 
11
9
  def initialize(*arguments)
12
10
  self.frames = []
@@ -25,27 +23,20 @@ module Raven
25
23
 
26
24
  # Not actually an interface, but I want to use the same style
27
25
  class Frame < Interface
28
- property :abs_path
29
- property :function
30
- property :vars
31
- property :pre_context
32
- property :post_context
33
- property :context_line
34
- property :lineno, :required => true
35
- property :in_app
36
-
37
- def initialize(*arguments)
38
- self.vars = {}
39
- self.pre_context = []
40
- self.post_context = []
41
- super(*arguments)
42
- end
26
+ attr_accessor :abs_path
27
+ attr_accessor :function
28
+ attr_accessor :vars, :default => []
29
+ attr_accessor :pre_context, :default => []
30
+ attr_accessor :post_context, :default => []
31
+ attr_accessor :context_line
32
+ attr_accessor :lineno
33
+ attr_accessor :in_app
43
34
 
44
35
  def filename
45
36
  return nil if self.abs_path.nil?
46
37
 
47
38
  prefix = $LOAD_PATH.select { |s| self.abs_path.start_with?(s.to_s) }.sort_by { |s| s.to_s.length }.last
48
- prefix ? self.abs_path[prefix.chomp(File::SEPARATOR).length+1..-1] : self.abs_path
39
+ prefix ? self.abs_path[prefix.to_s.chomp(File::SEPARATOR).length+1..-1] : self.abs_path
49
40
  end
50
41
 
51
42
  def to_hash(*args)
@@ -1,4 +1,5 @@
1
1
  require 'raven/processor'
2
+ require 'json'
2
3
 
3
4
  module Raven
4
5
  module Processor
@@ -24,6 +25,16 @@ module Raven
24
25
  value.map do |value_|
25
26
  apply(value_, key, visited, &block)
26
27
  end
28
+ elsif value.is_a?(String) && json_hash = JSON.parse(value) rescue nil
29
+ return "[...]" if visited.include?(value.__id__)
30
+ visited += [value.__id__]
31
+
32
+ json_hash = json_hash.each.reduce({}) do |memo, (k, v)|
33
+ memo[k] = apply(v, k, visited, &block)
34
+ memo
35
+ end
36
+
37
+ json_hash.to_json
27
38
  else
28
39
  block.call(key, value)
29
40
  end
@@ -21,8 +21,8 @@ module Raven
21
21
  # Use a standard Raven.configure call to configure your server credentials.
22
22
  class Rack
23
23
  def self.capture_exception(exception, env, options = {})
24
- if env[:requested_at]
25
- options[:time_spent] = Time.now - env[:requested_at]
24
+ if env['requested_at']
25
+ options[:time_spent] = Time.now - env['requested_at']
26
26
  end
27
27
  Raven.capture_exception(exception, options) do |evt|
28
28
  evt.interface :http do |int|
@@ -32,8 +32,8 @@ module Raven
32
32
  end
33
33
 
34
34
  def self.capture_message(message, env, options = {})
35
- if env[:requested_at]
36
- options[:time_spent] = Time.now - env[:requested_at]
35
+ if env['requested_at']
36
+ options[:time_spent] = Time.now - env['requested_at']
37
37
  end
38
38
  Raven.capture_message(message, options) do |evt|
39
39
  evt.interface :http do |int|
@@ -52,7 +52,7 @@ module Raven
52
52
 
53
53
  # store the current environment in our local context for arbitrary
54
54
  # callers
55
- env[:requested_at] = Time.now
55
+ env['requested_at'] = Time.now
56
56
  Raven.rack_context(env)
57
57
 
58
58
  begin
@@ -60,6 +60,7 @@ module Raven
60
60
  rescue Error
61
61
  raise # Don't capture Raven errors
62
62
  rescue Exception => e
63
+ Raven.logger.debug "Collecting %p: %s" % [ e.class, e.message ]
63
64
  Raven::Rack.capture_exception(e, env)
64
65
  raise
65
66
  end
@@ -20,12 +20,14 @@ module Raven
20
20
  config.project_root ||= ::Rails.root
21
21
  end
22
22
 
23
- if defined?(::ActionDispatch::DebugExceptions)
24
- require 'raven/rails/middleware/debug_exceptions_catcher'
25
- ::ActionDispatch::DebugExceptions.send(:include, Raven::Rails::Middleware::DebugExceptionsCatcher)
26
- elsif defined?(::ActionDispatch::ShowExceptions)
27
- require 'raven/rails/middleware/debug_exceptions_catcher'
28
- ::ActionDispatch::ShowExceptions.send(:include, Raven::Rails::Middleware::DebugExceptionsCatcher)
23
+ if Raven.configuration.catch_debugged_exceptions
24
+ if defined?(::ActionDispatch::DebugExceptions)
25
+ require 'raven/rails/middleware/debug_exceptions_catcher'
26
+ ::ActionDispatch::DebugExceptions.send(:include, Raven::Rails::Middleware::DebugExceptionsCatcher)
27
+ elsif defined?(::ActionDispatch::ShowExceptions)
28
+ require 'raven/rails/middleware/debug_exceptions_catcher'
29
+ ::ActionDispatch::ShowExceptions.send(:include, Raven::Rails::Middleware::DebugExceptionsCatcher)
30
+ end
29
31
  end
30
32
  end
31
33
 
@@ -22,6 +22,6 @@ if Sidekiq::VERSION < '3'
22
22
  end
23
23
  else
24
24
  Sidekiq.configure_server do |config|
25
- config.error_handlers << Proc.new {|ex,context| Raven.capture_exception(ex, context) }
25
+ config.error_handlers << Proc.new {|ex,context| Raven.capture_exception(ex, :extra => {:sidekiq => context}) }
26
26
  end
27
27
  end
@@ -1,3 +1,3 @@
1
1
  module Raven
2
- VERSION = "0.9.4"
2
+ VERSION = "0.10.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sentry-raven
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Kantrowitz
@@ -9,62 +9,48 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-09 00:00:00.000000000 Z
12
+ date: 2014-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: 0.7.6
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.7.6
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: uuidtools
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
- - !ruby/object:Gem::Dependency
43
- name: hashie
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ! '>='
47
- - !ruby/object:Gem::Version
48
- version: 1.1.0
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: 1.1.0
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: rake
58
44
  requirement: !ruby/object:Gem::Requirement
59
45
  requirements:
60
- - - ! '>='
46
+ - - '>='
61
47
  - !ruby/object:Gem::Version
62
48
  version: '0'
63
49
  type: :development
64
50
  prerelease: false
65
51
  version_requirements: !ruby/object:Gem::Requirement
66
52
  requirements:
67
- - - ! '>='
53
+ - - '>='
68
54
  - !ruby/object:Gem::Version
69
55
  version: '0'
70
56
  - !ruby/object:Gem::Dependency
@@ -73,14 +59,14 @@ dependencies:
73
59
  requirements:
74
60
  - - ~>
75
61
  - !ruby/object:Gem::Version
76
- version: '2.10'
62
+ version: '3.0'
77
63
  type: :development
78
64
  prerelease: false
79
65
  version_requirements: !ruby/object:Gem::Requirement
80
66
  requirements:
81
67
  - - ~>
82
68
  - !ruby/object:Gem::Version
83
- version: '2.10'
69
+ version: '3.0'
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: mime-types
86
72
  requirement: !ruby/object:Gem::Requirement
@@ -99,14 +85,28 @@ dependencies:
99
85
  name: coveralls
100
86
  requirement: !ruby/object:Gem::Requirement
101
87
  requirements:
102
- - - ! '>='
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rest-client
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
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
  description:
@@ -118,12 +118,9 @@ extra_rdoc_files:
118
118
  - README.md
119
119
  - LICENSE
120
120
  files:
121
- - LICENSE
122
- - README.md
123
- - bin/raven
124
- - lib/raven.rb
125
121
  - lib/raven/backtrace.rb
126
122
  - lib/raven/base.rb
123
+ - lib/raven/better_attr_accessor.rb
127
124
  - lib/raven/cli.rb
128
125
  - lib/raven/client.rb
129
126
  - lib/raven/configuration.rb
@@ -131,11 +128,11 @@ files:
131
128
  - lib/raven/error.rb
132
129
  - lib/raven/event.rb
133
130
  - lib/raven/integrations/delayed_job.rb
134
- - lib/raven/interfaces.rb
135
131
  - lib/raven/interfaces/exception.rb
136
132
  - lib/raven/interfaces/http.rb
137
133
  - lib/raven/interfaces/message.rb
138
134
  - lib/raven/interfaces/stack_trace.rb
135
+ - lib/raven/interfaces.rb
139
136
  - lib/raven/linecache.rb
140
137
  - lib/raven/logger.rb
141
138
  - lib/raven/okjson.rb
@@ -147,11 +144,15 @@ files:
147
144
  - lib/raven/railtie.rb
148
145
  - lib/raven/sidekiq.rb
149
146
  - lib/raven/tasks.rb
150
- - lib/raven/transports.rb
151
147
  - lib/raven/transports/http.rb
152
148
  - lib/raven/transports/udp.rb
149
+ - lib/raven/transports.rb
153
150
  - lib/raven/version.rb
151
+ - lib/raven.rb
154
152
  - lib/sentry-raven.rb
153
+ - README.md
154
+ - LICENSE
155
+ - bin/raven
155
156
  homepage: http://github.com/getsentry/raven-ruby
156
157
  licenses:
157
158
  - Apache-2.0
@@ -162,17 +163,17 @@ require_paths:
162
163
  - lib
163
164
  required_ruby_version: !ruby/object:Gem::Requirement
164
165
  requirements:
165
- - - ! '>='
166
+ - - '>='
166
167
  - !ruby/object:Gem::Version
167
168
  version: '0'
168
169
  required_rubygems_version: !ruby/object:Gem::Requirement
169
170
  requirements:
170
- - - ! '>='
171
+ - - '>='
171
172
  - !ruby/object:Gem::Version
172
173
  version: '0'
173
174
  requirements: []
174
175
  rubyforge_project:
175
- rubygems_version: 2.2.2
176
+ rubygems_version: 2.0.3
176
177
  signing_key:
177
178
  specification_version: 4
178
179
  summary: A gem that provides a client interface for the Sentry error logger