sentry-raven 2.7.1 → 2.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.rubocop.yml +5 -5
- data/.travis.yml +11 -6
- data/Gemfile +5 -0
- data/changelog.md +9 -0
- data/docs/context.rst +2 -2
- data/docs/integrations/rails.rst +1 -1
- data/lib/raven/configuration.rb +34 -27
- data/lib/raven/event.rb +46 -26
- data/lib/raven/instance.rb +1 -1
- data/lib/raven/integrations/rack-timeout.rb +7 -3
- data/lib/raven/integrations/rack.rb +3 -1
- data/lib/raven/integrations/sidekiq.rb +10 -1
- data/lib/raven/transports/http.rb +15 -14
- data/lib/raven/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 65c91464c7999bd385921487a02e931b3f178412bd22d43ca614c289c6d72c6d
|
4
|
+
data.tar.gz: 789a54b1f5c20db0246ce310a8c7993a9472b8594a7feae8c18843c56ca6963d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f7b6f3d3cb85364b94892c851c8c9dd0ebe17ea21438f596fafe805125275b6acb3e3bc9ba93850c6a0a2d5b1ce5429db37c29604841b4792cc795be50cc870
|
7
|
+
data.tar.gz: 77e29bf73bb328e51844ffb067730511fd130765c798d5611de1c714681d9fa6a88a552560b097a3cc2074387d2a965c381f6f51125fde81ed8b2e7b3f5900bf
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -7,23 +7,23 @@ AllCops:
|
|
7
7
|
- 'vendor/**/*'
|
8
8
|
|
9
9
|
Metrics/ClassLength:
|
10
|
-
Max:
|
10
|
+
Max: 268
|
11
11
|
CountComments: false
|
12
12
|
|
13
13
|
Metrics/AbcSize:
|
14
|
-
Max:
|
14
|
+
Max: 30
|
15
15
|
|
16
16
|
Metrics/CyclomaticComplexity:
|
17
|
-
Max:
|
17
|
+
Max: 12
|
18
18
|
|
19
19
|
Metrics/PerceivedComplexity:
|
20
|
-
Max:
|
20
|
+
Max: 11
|
21
21
|
|
22
22
|
Metrics/LineLength:
|
23
23
|
Max: 155
|
24
24
|
|
25
25
|
Metrics/MethodLength:
|
26
|
-
Max:
|
26
|
+
Max: 30
|
27
27
|
|
28
28
|
Style/SignalException:
|
29
29
|
Enabled: false
|
data/.travis.yml
CHANGED
@@ -4,13 +4,17 @@ sudo: false
|
|
4
4
|
group: beta
|
5
5
|
cache: bundler
|
6
6
|
|
7
|
+
services:
|
8
|
+
- redis-server
|
9
|
+
|
7
10
|
branches:
|
8
11
|
only: [master]
|
9
12
|
|
10
13
|
rvm:
|
11
|
-
- 2.2.
|
12
|
-
- 2.3.
|
13
|
-
- 2.4.
|
14
|
+
- 2.2.9
|
15
|
+
- 2.3.6
|
16
|
+
- 2.4.3
|
17
|
+
- 2.5.0
|
14
18
|
|
15
19
|
env:
|
16
20
|
- RAILS_VERSION=4
|
@@ -24,7 +28,8 @@ addons:
|
|
24
28
|
|
25
29
|
before_install:
|
26
30
|
- service haveged start
|
27
|
-
|
31
|
+
# Pin bundler version due to https://github.com/rubygems/rubygems/issues/2055
|
32
|
+
- gem install bundler -v 1.16.0
|
28
33
|
|
29
34
|
matrix:
|
30
35
|
include:
|
@@ -32,9 +37,9 @@ matrix:
|
|
32
37
|
env: RAILS_VERSION=4
|
33
38
|
- rvm: jruby-1.7.27
|
34
39
|
env: JRUBY_OPTS="--dev" RAILS_VERSION=4
|
35
|
-
- rvm: jruby-9.1.
|
40
|
+
- rvm: jruby-9.1.15.0
|
36
41
|
env: JRUBY_OPTS="--dev -J-Djruby.launch.inproc=true -J-Xmx1024M" RAILS_VERSION=4
|
37
|
-
- rvm: jruby-9.1.
|
42
|
+
- rvm: jruby-9.1.15.0
|
38
43
|
env: JRUBY_OPTS="--dev -J-Djruby.launch.inproc=true -J-Xmx1024M" RAILS_VERSION=5
|
39
44
|
- rvm: ruby-head
|
40
45
|
env: RAILS_VERSION=0
|
data/Gemfile
CHANGED
@@ -17,9 +17,11 @@ if RUBY_VERSION < '2.0'
|
|
17
17
|
gem "nokogiri", "~> 1.6.8"
|
18
18
|
gem "rack", "~> 1.6.8"
|
19
19
|
gem "sidekiq", "< 3.2"
|
20
|
+
gem "rack-timeout", "0.3.0"
|
20
21
|
else
|
21
22
|
gem "rack"
|
22
23
|
gem "sidekiq"
|
24
|
+
gem "rack-timeout"
|
23
25
|
end
|
24
26
|
gem "pry"
|
25
27
|
gem "pry-coolline"
|
@@ -29,5 +31,8 @@ gem "ruby-prof", platform: :mri
|
|
29
31
|
gem "rake"
|
30
32
|
gem "rubocop", "~> 0.41.1"
|
31
33
|
gem "rspec"
|
34
|
+
gem "capybara" # rspec system tests
|
35
|
+
gem "puma" # rspec system tests
|
36
|
+
|
32
37
|
gem "timecop"
|
33
38
|
gem "test-unit", platform: :mri if RUBY_VERSION > '2.2'
|
data/changelog.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
2.7.2
|
2
|
+
-----
|
3
|
+
|
4
|
+
* BUGFIX: GlobalIDs are now displayed correctly in Sidekiq contexts [@louim, #798]
|
5
|
+
* BUGFIX: If git is not installed, fail silently during release detection [@nateberkopec]
|
6
|
+
* BUGFIX: We do not support rack-timeout <= 0.2, fix errors when incompat version present [@nateberkopec]
|
7
|
+
* BUGFIX: Put cookies in the correct spot of event [@nateberkopec, #812]
|
8
|
+
* BUGFIX: Exception context is deep_merged [@janklimo, #782]
|
9
|
+
|
1
10
|
2.7.1
|
2
11
|
-----
|
3
12
|
|
data/docs/context.rst
CHANGED
@@ -130,9 +130,9 @@ element of the array) will be used as the ``transaction`` for any events:
|
|
130
130
|
|
131
131
|
.. sourcecode:: ruby
|
132
132
|
|
133
|
-
Raven.context.
|
133
|
+
Raven.context.transaction.push "User Import"
|
134
134
|
# import some users
|
135
|
-
Raven.context.
|
135
|
+
Raven.context.transaction.pop
|
136
136
|
|
137
137
|
Transactions may also be overridden/set explicitly during event creation:
|
138
138
|
|
data/docs/integrations/rails.rst
CHANGED
data/lib/raven/configuration.rb
CHANGED
@@ -130,7 +130,7 @@ module Raven
|
|
130
130
|
# Note that the object passed into the block will be a String (messages) or
|
131
131
|
# an exception.
|
132
132
|
# e.g. lambda { |exc_or_msg| exc_or_msg.some_attr == false }
|
133
|
-
|
133
|
+
attr_reader :should_capture
|
134
134
|
|
135
135
|
# Silences ready message when true.
|
136
136
|
attr_accessor :silence_ready
|
@@ -186,7 +186,7 @@ module Raven
|
|
186
186
|
def initialize
|
187
187
|
self.async = false
|
188
188
|
self.context_lines = 3
|
189
|
-
self.current_environment =
|
189
|
+
self.current_environment = current_environment_from_env
|
190
190
|
self.encoding = 'gzip'
|
191
191
|
self.environments = []
|
192
192
|
self.exclude_loggers = []
|
@@ -196,7 +196,6 @@ module Raven
|
|
196
196
|
self.open_timeout = 1
|
197
197
|
self.processors = DEFAULT_PROCESSORS.dup
|
198
198
|
self.project_root = detect_project_root
|
199
|
-
self.proxy = nil
|
200
199
|
self.rails_activesupport_breadcrumbs = false
|
201
200
|
self.rails_report_rescued_exceptions = true
|
202
201
|
self.release = detect_release
|
@@ -206,8 +205,8 @@ module Raven
|
|
206
205
|
self.sanitize_fields_excluded = []
|
207
206
|
self.sanitize_http_headers = []
|
208
207
|
self.send_modules = true
|
209
|
-
self.server = ENV['SENTRY_DSN']
|
210
|
-
self.server_name =
|
208
|
+
self.server = ENV['SENTRY_DSN']
|
209
|
+
self.server_name = server_name_from_env
|
211
210
|
self.should_capture = false
|
212
211
|
self.ssl_verification = true
|
213
212
|
self.tags = {}
|
@@ -216,6 +215,7 @@ module Raven
|
|
216
215
|
end
|
217
216
|
|
218
217
|
def server=(value)
|
218
|
+
return if value.nil?
|
219
219
|
uri = URI.parse(value)
|
220
220
|
uri_path = uri.path.split('/')
|
221
221
|
|
@@ -296,22 +296,6 @@ module Raven
|
|
296
296
|
Backtrace::Line.instance_variable_set(:@in_app_pattern, nil) # blow away cache
|
297
297
|
end
|
298
298
|
|
299
|
-
def detect_release
|
300
|
-
detect_release_from_git ||
|
301
|
-
detect_release_from_capistrano ||
|
302
|
-
detect_release_from_heroku
|
303
|
-
rescue => ex
|
304
|
-
logger.error "Error detecting release: #{ex.message}"
|
305
|
-
end
|
306
|
-
|
307
|
-
def detect_project_root
|
308
|
-
if defined? Rails.root # we are in a Rails application
|
309
|
-
Rails.root.to_s
|
310
|
-
else
|
311
|
-
Dir.pwd
|
312
|
-
end
|
313
|
-
end
|
314
|
-
|
315
299
|
def exception_class_allowed?(exc)
|
316
300
|
if exc.is_a?(Raven::Error)
|
317
301
|
# Try to prevent error reporting loops
|
@@ -327,6 +311,22 @@ module Raven
|
|
327
311
|
|
328
312
|
private
|
329
313
|
|
314
|
+
def detect_project_root
|
315
|
+
if defined? Rails.root # we are in a Rails application
|
316
|
+
Rails.root.to_s
|
317
|
+
else
|
318
|
+
Dir.pwd
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
def detect_release
|
323
|
+
detect_release_from_git ||
|
324
|
+
detect_release_from_capistrano ||
|
325
|
+
detect_release_from_heroku
|
326
|
+
rescue => ex
|
327
|
+
logger.error "Error detecting release: #{ex.message}"
|
328
|
+
end
|
329
|
+
|
330
330
|
def excluded_exception?(exc)
|
331
331
|
excluded_exceptions.any? { |x| get_exception_class(x) === exc }
|
332
332
|
end
|
@@ -375,7 +375,7 @@ module Raven
|
|
375
375
|
end
|
376
376
|
|
377
377
|
def detect_release_from_git
|
378
|
-
|
378
|
+
Raven.sys_command("git rev-parse --short HEAD") if File.directory?(".git")
|
379
379
|
end
|
380
380
|
|
381
381
|
def capture_in_current_environment?
|
@@ -402,11 +402,6 @@ module Raven
|
|
402
402
|
false
|
403
403
|
end
|
404
404
|
|
405
|
-
def heroku_dyno_name
|
406
|
-
return unless running_on_heroku?
|
407
|
-
ENV['DYNO']
|
408
|
-
end
|
409
|
-
|
410
405
|
def sample_allowed?
|
411
406
|
return true if sample_rate == 1.0
|
412
407
|
if Random::DEFAULT.rand >= sample_rate
|
@@ -423,5 +418,17 @@ module Raven
|
|
423
418
|
Socket.gethostname ||
|
424
419
|
Socket.gethostbyname(hostname).first rescue server_name
|
425
420
|
end
|
421
|
+
|
422
|
+
def current_environment_from_env
|
423
|
+
ENV['SENTRY_CURRENT_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'default'
|
424
|
+
end
|
425
|
+
|
426
|
+
def server_name_from_env
|
427
|
+
if running_on_heroku?
|
428
|
+
ENV['DYNO']
|
429
|
+
else
|
430
|
+
resolve_hostname
|
431
|
+
end
|
432
|
+
end
|
426
433
|
end
|
427
434
|
end
|
data/lib/raven/event.rb
CHANGED
@@ -10,23 +10,24 @@ module Raven
|
|
10
10
|
|
11
11
|
SDK = { "name" => "raven-ruby", "version" => Raven::VERSION }.freeze
|
12
12
|
|
13
|
-
attr_accessor :id, :
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:sdk
|
13
|
+
attr_accessor :id, :logger, :transaction, :server_name, :release, :modules,
|
14
|
+
:extra, :tags, :context, :configuration, :checksum,
|
15
|
+
:fingerprint, :environment, :server_os, :runtime,
|
16
|
+
:breadcrumbs, :user, :backtrace, :platform, :sdk
|
18
17
|
alias event_id id
|
19
18
|
|
19
|
+
attr_reader :level, :timestamp, :time_spent
|
20
|
+
|
20
21
|
def initialize(init = {})
|
21
|
-
|
22
|
-
self.breadcrumbs = Raven.breadcrumbs
|
23
|
-
self.context = Raven.context
|
22
|
+
# Set some simple default values
|
24
23
|
self.id = SecureRandom.uuid.delete("-")
|
25
24
|
self.timestamp = Time.now.utc
|
26
25
|
self.level = :error
|
27
26
|
self.logger = :ruby
|
28
27
|
self.platform = :ruby
|
29
28
|
self.sdk = SDK
|
29
|
+
|
30
|
+
# Set some attributes with empty hashes to allow merging
|
30
31
|
@interfaces = {}
|
31
32
|
self.user = {} # TODO: contexts
|
32
33
|
self.extra = {} # TODO: contexts
|
@@ -34,27 +35,14 @@ module Raven
|
|
34
35
|
self.runtime = {} # TODO: contexts
|
35
36
|
self.tags = {} # TODO: contexts
|
36
37
|
|
37
|
-
|
38
|
+
copy_initial_state
|
38
39
|
|
40
|
+
# Allow attributes to be set on the event at initialization
|
41
|
+
yield self if block_given?
|
39
42
|
init.each_pair { |key, val| public_send("#{key}=", val) }
|
40
43
|
|
41
|
-
|
42
|
-
|
43
|
-
self.release ||= configuration.release
|
44
|
-
self.modules = list_gem_specs if configuration.send_modules
|
45
|
-
self.environment ||= configuration.current_environment
|
46
|
-
|
47
|
-
if !self[:http] && context.rack_env
|
48
|
-
interface :http do |int|
|
49
|
-
int.from_rack(context.rack_env)
|
50
|
-
end
|
51
|
-
|
52
|
-
context.user[:ip_address] = calculate_real_ip_from_rack
|
53
|
-
end
|
54
|
-
|
55
|
-
self.user = context.user.merge(user) # TODO: contexts
|
56
|
-
self.extra = context.extra.merge(extra) # TODO: contexts
|
57
|
-
self.tags = configuration.tags.merge(context.tags).merge(tags) # TODO: contexts
|
44
|
+
set_core_attributes_from_configuration
|
45
|
+
set_core_attributes_from_context
|
58
46
|
end
|
59
47
|
|
60
48
|
def self.from_exception(exc, options = {}, &block)
|
@@ -199,6 +187,38 @@ module Raven
|
|
199
187
|
|
200
188
|
private
|
201
189
|
|
190
|
+
def copy_initial_state
|
191
|
+
self.configuration = Raven.configuration
|
192
|
+
self.breadcrumbs = Raven.breadcrumbs
|
193
|
+
self.context = Raven.context
|
194
|
+
end
|
195
|
+
|
196
|
+
def set_core_attributes_from_configuration
|
197
|
+
self.server_name ||= configuration.server_name
|
198
|
+
self.release ||= configuration.release
|
199
|
+
self.modules = list_gem_specs if configuration.send_modules
|
200
|
+
self.environment ||= configuration.current_environment
|
201
|
+
end
|
202
|
+
|
203
|
+
def set_core_attributes_from_context
|
204
|
+
self.transaction ||= context.transaction.last
|
205
|
+
|
206
|
+
# If this is a Rack event, merge Rack context
|
207
|
+
add_rack_context if !self[:http] && context.rack_env
|
208
|
+
|
209
|
+
# Merge contexts
|
210
|
+
self.user = context.user.merge(user) # TODO: contexts
|
211
|
+
self.extra = context.extra.merge(extra) # TODO: contexts
|
212
|
+
self.tags = configuration.tags.merge(context.tags).merge!(tags) # TODO: contexts
|
213
|
+
end
|
214
|
+
|
215
|
+
def add_rack_context
|
216
|
+
interface :http do |int|
|
217
|
+
int.from_rack(context.rack_env)
|
218
|
+
end
|
219
|
+
context.user[:ip_address] = calculate_real_ip_from_rack
|
220
|
+
end
|
221
|
+
|
202
222
|
# When behind a proxy (or if the user is using a proxy), we can't use
|
203
223
|
# REMOTE_ADDR to determine the Event IP, and must use other headers instead.
|
204
224
|
def calculate_real_ip_from_rack
|
data/lib/raven/instance.rb
CHANGED
@@ -158,7 +158,7 @@ module Raven
|
|
158
158
|
# end
|
159
159
|
def annotate_exception(exc, options = {})
|
160
160
|
notes = (exc.instance_variable_defined?(:@__raven_context) && exc.instance_variable_get(:@__raven_context)) || {}
|
161
|
-
|
161
|
+
Raven::Utils::DeepMergeHash.deep_merge!(notes, options)
|
162
162
|
exc.instance_variable_set(:@__raven_context, notes)
|
163
163
|
exc
|
164
164
|
end
|
@@ -7,9 +7,13 @@ require "rack/timeout/base" unless defined?(Rack::Timeout)
|
|
7
7
|
# that will distinguish exceptions in the way you desire.
|
8
8
|
module RackTimeoutExtensions
|
9
9
|
def raven_context
|
10
|
-
|
10
|
+
# Only rack-timeout 0.3.0+ provides the request environment, but we can't
|
11
|
+
# gate this based on a gem version constant because rack-timeout does
|
12
|
+
# not provide one.
|
13
|
+
{ :fingerprint => ["{{ default }}", env["REQUEST_URI"]] } if defined?(env)
|
11
14
|
end
|
12
15
|
end
|
13
16
|
|
14
|
-
|
15
|
-
Rack::Timeout::
|
17
|
+
# Include is private in Ruby 1.9
|
18
|
+
Rack::Timeout::Error.__send__(:include, RackTimeoutExtensions)
|
19
|
+
Rack::Timeout::RequestTimeoutException.__send__(:include, RackTimeoutExtensions)
|
@@ -74,9 +74,10 @@ module Raven
|
|
74
74
|
self.method = req.request_method
|
75
75
|
self.query_string = req.query_string
|
76
76
|
self.data = read_data_from(req)
|
77
|
+
self.cookies = req.cookies
|
77
78
|
|
78
79
|
self.headers = format_headers_for_sentry(env_hash)
|
79
|
-
self.env
|
80
|
+
self.env = format_env_for_sentry(env_hash)
|
80
81
|
end
|
81
82
|
|
82
83
|
private
|
@@ -108,6 +109,7 @@ module Raven
|
|
108
109
|
# if the request has legitimately sent a Version header themselves.
|
109
110
|
# See: https://github.com/rack/rack/blob/028438f/lib/rack/handler/cgi.rb#L29
|
110
111
|
next if key == 'HTTP_VERSION' && value == env_hash['SERVER_PROTOCOL']
|
112
|
+
next if key == 'HTTP_COOKIE' # Cookies don't go here, they go somewhere else
|
111
113
|
|
112
114
|
next unless key.start_with?('HTTP_') || %w(CONTENT_TYPE CONTENT_LENGTH).include?(key)
|
113
115
|
# Rack stores headers as HTTP_WHAT_EVER, we need What-Ever
|
@@ -14,6 +14,7 @@ module Raven
|
|
14
14
|
|
15
15
|
class SidekiqErrorHandler
|
16
16
|
ACTIVEJOB_RESERVED_PREFIX = "_aj_".freeze
|
17
|
+
HAS_GLOBALID = const_defined?('GlobalID')
|
17
18
|
|
18
19
|
def call(ex, context)
|
19
20
|
context = filter_context(context)
|
@@ -42,7 +43,7 @@ module Raven
|
|
42
43
|
when Hash
|
43
44
|
Hash[context.map { |key, value| filter_context_hash(key, value) }]
|
44
45
|
else
|
45
|
-
context
|
46
|
+
format_globalid(context)
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
@@ -65,6 +66,14 @@ module Raven
|
|
65
66
|
"Sidekiq"
|
66
67
|
end
|
67
68
|
end
|
69
|
+
|
70
|
+
def format_globalid(context)
|
71
|
+
if HAS_GLOBALID && context.is_a?(GlobalID)
|
72
|
+
context.to_s
|
73
|
+
else
|
74
|
+
context
|
75
|
+
end
|
76
|
+
end
|
68
77
|
end
|
69
78
|
end
|
70
79
|
|
@@ -39,26 +39,27 @@ module Raven
|
|
39
39
|
def set_conn
|
40
40
|
configuration.logger.debug "Raven HTTP Transport connecting to #{configuration.server}"
|
41
41
|
|
42
|
-
|
43
|
-
ssl_configuration[:verify] = configuration.ssl_verification
|
44
|
-
ssl_configuration[:ca_file] = configuration.ssl_ca_file
|
45
|
-
|
46
|
-
conn = Faraday.new(
|
47
|
-
:url => configuration[:server],
|
48
|
-
:ssl => ssl_configuration
|
49
|
-
) do |builder|
|
42
|
+
Faraday.new(configuration.server, :ssl => ssl_configuration) do |builder|
|
50
43
|
configuration.faraday_builder.call(builder) if configuration.faraday_builder
|
51
44
|
builder.response :raise_error
|
45
|
+
builder.options.merge! faraday_opts
|
46
|
+
builder.headers[:user_agent] = "sentry-ruby/#{Raven::VERSION}"
|
52
47
|
builder.adapter(*adapter)
|
53
48
|
end
|
49
|
+
end
|
54
50
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
# TODO: deprecate and replace where possible w/Faraday Builder
|
52
|
+
def faraday_opts
|
53
|
+
[:proxy, :timeout, :open_timeout].each_with_object({}) do |opt, memo|
|
54
|
+
memo[opt] = configuration.public_send(opt) if configuration.public_send(opt)
|
55
|
+
end
|
56
|
+
end
|
60
57
|
|
61
|
-
|
58
|
+
def ssl_configuration
|
59
|
+
(configuration.ssl || {}).merge(
|
60
|
+
:verify => configuration.ssl_verification,
|
61
|
+
:ca_file => configuration.ssl_ca_file
|
62
|
+
)
|
62
63
|
end
|
63
64
|
end
|
64
65
|
end
|
data/lib/raven/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sentry-raven
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sentry Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
136
|
version: '0'
|
137
137
|
requirements: []
|
138
138
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.
|
139
|
+
rubygems_version: 2.7.3
|
140
140
|
signing_key:
|
141
141
|
specification_version: 4
|
142
142
|
summary: A gem that provides a client interface for the Sentry error logger
|