rollbar 1.2.11 → 1.2.12

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: 933cce1a042ee31e447197924df32209b62743df
4
- data.tar.gz: 93018fc7e8419165e4b337d43511ea65bcff4637
3
+ metadata.gz: d7d45f060a4cd05cfc90f7594dea1826eb5d7e0f
4
+ data.tar.gz: 0c877c9d5dab1ccdade96748f28cf7268e03865c
5
5
  SHA512:
6
- metadata.gz: 0d4548ff4e1c0fafbdf5a4c21a4897345c38ec94ff742f1a80d26cd6efcd0f062151597be620c20d070c4f735820ef11e442fe1bf4d8d39a022dc7b44c71e67b
7
- data.tar.gz: 37612d8022dfd5a395b2e663fb111b943be5aac57fb9ba5101059bce7fe72c15294325403439bd34d5f137ba533bc14e532ce6d985c3412e15eba00dbeaba983
6
+ metadata.gz: 3b87159bca2a58f15dbb5550d7861b5a80209cb2ce62b624559e3a6f7ff768110fec7e9a379ad9e7943dfcc9af3910cafb1ce49a32eca101f1b7295544fbe036
7
+ data.tar.gz: e3050f14f5a86a5773368cb424762c05e930a125da0d35fe92535553261a649acb7118250b48711fad800453a9c6380dc6fb5be6ba4b7099af8b10b967b9e4c8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.2.12
4
+
5
+ Bug fixes:
6
+
7
+ - Fix bug introduced in 1.2.11 that broke the sidekiq async handler. See [#190](https://github.com/rollbar/rollbar-gem/issues/190)
8
+ - Skip Rake monkeypatch for Rake < 0.9.0. Fixes [#187](https://github.com/rollbar/rollbar-gem/issues/187)
9
+
10
+
3
11
  ## 1.2.11
4
12
 
5
13
  New features:
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Rollbar notifier for Ruby [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=v1.2.11)](https://travis-ci.org/rollbar/rollbar-gem/branches)
1
+ # Rollbar notifier for Ruby [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=v1.2.12)](https://travis-ci.org/rollbar/rollbar-gem/branches)
2
2
 
3
3
  <!-- RemoveNext -->
4
4
  Ruby gem for reporting exceptions, errors, and log messages to [Rollbar](https://rollbar.com).
@@ -9,7 +9,7 @@ Ruby gem for reporting exceptions, errors, and log messages to [Rollbar](https:/
9
9
 
10
10
  Add this line to your application's Gemfile:
11
11
 
12
- gem 'rollbar', '~> 1.2.11'
12
+ gem 'rollbar', '~> 1.2.12'
13
13
 
14
14
  And then execute:
15
15
 
data/THANKS.md CHANGED
@@ -14,12 +14,14 @@ Huge thanks to the following contributors (by github username). For the most up-
14
14
  - [dlackty](https://github.com/dlackty)
15
15
  - [fab](https://github.com/fab)
16
16
  - [firstbanco](https://github.com/firstbanco)
17
+ - [flomotlik](https://github.com/flomotlik)
17
18
  - [Florent2](https://github.com/Florent2)
18
19
  - [gersmann](https://github.com/gersmann)
19
20
  - [grosser](https://github.com/grosser)
20
21
  - [ixti](https://github.com/ixti)
21
22
  - [jeremyvdw](https://github.com/jeremyvdw)
22
23
  - [johnknott](https://github.com/johnknott)
24
+ - [jonah-williams](https://github.com/jonah-williams)
23
25
  - [jondeandres](https://github.com/jondeandres)
24
26
  - [JoshuaOSHickman](https://github.com/JoshuaOSHickman)
25
27
  - [juggler](https://github.com/juggler)
data/lib/rollbar/rake.rb CHANGED
@@ -1,12 +1,38 @@
1
1
  require 'rake'
2
2
 
3
- module Rake
4
- class Application
5
- alias_method :orig_display_error_message, :display_error_message
3
+ module Rollbar
4
+ module Rake
5
+ def self.patch!
6
+ skip_patch && return unless patch?
6
7
 
7
- def display_error_message(ex)
8
- Rollbar.error(ex)
9
- orig_display_error_message(ex)
8
+ ::Rake::Application.class_eval do
9
+ alias_method :orig_display_error_message, :display_error_message
10
+
11
+ def display_error_message(ex)
12
+ Rollbar.error(ex)
13
+ orig_display_error_message(ex)
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.skip_patch
19
+ warn('[Rollbar] Rollbar is disabled for Rake tasks since your Rake version is under 0.9.x. Please upgrade to 0.9.x or higher.')
20
+ end
21
+
22
+ def self.patch?
23
+ major, minor, *_ = rake_version.split('.').map(&:to_i)
24
+
25
+ major > 0 || major == 0 && minor > 8
26
+ end
27
+
28
+ def self.rake_version
29
+ if Object.const_defined?('RAKEVERSION')
30
+ return RAKEVERSION
31
+ elsif Rake.const_defined?('VERSION')
32
+ return Rake::VERSION
33
+ end
10
34
  end
11
35
  end
12
36
  end
37
+
38
+ Rollbar::Rake.patch!
@@ -11,9 +11,9 @@ module Rollbar
11
11
 
12
12
  def call(payload)
13
13
  new_payload = payload.clone
14
- body = new_payload['data'][:body]
14
+ body = new_payload['data']['body']
15
15
 
16
- if body[:trace_chain]
16
+ if body['trace_chain']
17
17
  truncate_trace_chain(body)
18
18
  else
19
19
  truncate_trace(body)
@@ -23,19 +23,19 @@ module Rollbar
23
23
  end
24
24
 
25
25
  def truncate_trace(body)
26
- trace_data = body[:trace]
27
- frames = trace_data[:frames]
28
- trace_data[:frames] = select_frames(frames)
26
+ trace_data = body['trace']
27
+ frames = trace_data['frames']
28
+ trace_data['frames'] = select_frames(frames)
29
29
 
30
- body[:trace][:frames] = select_frames(body[:trace][:frames])
30
+ body['trace']['frames'] = select_frames(body['trace']['frames'])
31
31
  end
32
32
 
33
33
  def truncate_trace_chain(body)
34
- chain = body[:trace_chain]
34
+ chain = body['trace_chain']
35
35
 
36
- body[:trace_chain] = chain.map do |trace_data|
37
- frames = trace_data[:frames]
38
- trace_data[:frames] = select_frames(frames)
36
+ body['trace_chain'] = chain.map do |trace_data|
37
+ frames = trace_data['frames']
38
+ trace_data['frames'] = select_frames(frames)
39
39
  trace_data
40
40
  end
41
41
  end
@@ -11,14 +11,14 @@ module Rollbar
11
11
 
12
12
  def call(payload)
13
13
  new_payload = payload.clone
14
- body = new_payload['data'][:body]
14
+ body = new_payload['data']['body']
15
15
 
16
- if body[:trace_chain]
17
- body[:trace_chain] = body[:trace_chain].map do |trace_data|
16
+ if body['trace_chain']
17
+ body['trace_chain'] = body['trace_chain'].map do |trace_data|
18
18
  truncate_trace_data(trace_data)
19
19
  end
20
20
  else
21
- body[:trace] = truncate_trace_data(body[:trace])
21
+ body['trace'] = truncate_trace_data(body['trace'])
22
22
  end
23
23
 
24
24
 
@@ -26,9 +26,9 @@ module Rollbar
26
26
  end
27
27
 
28
28
  def truncate_trace_data(trace_data)
29
- trace_data[:exception].delete(:description)
30
- trace_data[:exception][:message] = trace_data[:exception][:message][0, 255]
31
- trace_data[:frames] = select_frames(trace_data[:frames], 1)
29
+ trace_data['exception'].delete('description')
30
+ trace_data['exception']['message'] = trace_data['exception']['message'][0, 255]
31
+ trace_data['frames'] = select_frames(trace_data['frames'], 1)
32
32
 
33
33
  trace_data
34
34
  end
@@ -0,0 +1,24 @@
1
+ module Rollbar
2
+ module Util
3
+ module Hash
4
+ def self.deep_stringify_keys(hash)
5
+ hash.reduce({}) do |h, (key, value)|
6
+ h[key.to_s] = map_value(value, :deep_stringify_keys)
7
+
8
+ h
9
+ end
10
+ end
11
+
12
+ def self.map_value(thing, m)
13
+ case thing
14
+ when ::Hash
15
+ send(m, thing)
16
+ when Array
17
+ thing.map { |v| map_value(v, m) }
18
+ else
19
+ thing
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
data/lib/rollbar/util.rb CHANGED
@@ -4,8 +4,8 @@ module Rollbar
4
4
  if obj.is_a?(Array)
5
5
  for i in 0 ... obj.size
6
6
  value = obj[i]
7
-
8
- if value.is_a?(Hash) || value.is_a?(Array)
7
+
8
+ if value.is_a?(::Hash) || value.is_a?(Array)
9
9
  self.iterate_and_update(value, block)
10
10
  else
11
11
  obj[i] = block.call(value)
@@ -13,42 +13,42 @@ module Rollbar
13
13
  end
14
14
  else
15
15
  key_updates = []
16
-
16
+
17
17
  obj.each do |k, v|
18
18
  new_key = nil
19
-
20
- if v.is_a?(Hash) || v.is_a?(Array)
19
+
20
+ if v.is_a?(::Hash) || v.is_a?(Array)
21
21
  self.iterate_and_update(v, block)
22
22
  new_key = block.call(k)
23
23
  else
24
24
  new_key = block.call(k)
25
25
  obj[k] = block.call(v)
26
26
  end
27
-
27
+
28
28
  if new_key != k
29
29
  key_updates.push([k, new_key])
30
30
  end
31
31
  end
32
-
32
+
33
33
  key_updates.each do |old_key, new_key|
34
34
  obj[new_key] = obj[old_key]
35
35
  obj.delete(old_key)
36
36
  end
37
37
  end
38
38
  end
39
-
39
+
40
40
  def self.iterate_and_update_hash(hash, block)
41
41
  hash.each do |k, v|
42
- if v.is_a?(Hash)
42
+ if v.is_a?(::Hash)
43
43
  self.iterate_and_update_hash(v, block)
44
44
  else
45
45
  hash[k] = block.call(k, v)
46
46
  end
47
47
  end
48
48
  end
49
-
49
+
50
50
  def self.deep_copy(obj)
51
- if obj.is_a?(Hash)
51
+ if obj.is_a?(::Hash)
52
52
  result = obj.clone
53
53
  obj.each {|k, v| result[k] = deep_copy(v)}
54
54
  result
@@ -61,10 +61,10 @@ module Rollbar
61
61
  obj
62
62
  end
63
63
  end
64
-
64
+
65
65
  def self.deep_merge(hash1, hash2)
66
66
  hash2.each_key do |k|
67
- if hash1[k].is_a? Hash and hash2[k].is_a? Hash
67
+ if hash1[k].is_a? ::Hash and hash2[k].is_a? ::Hash
68
68
  hash1[k] = deep_merge(hash1[k], hash2[k])
69
69
  elsif hash1[k].is_a? Array and hash2[k].is_a? Array
70
70
  hash1[k] += deep_copy(hash2[k])
@@ -72,17 +72,17 @@ module Rollbar
72
72
  hash1[k] = deep_copy(hash2[k])
73
73
  end
74
74
  end
75
-
75
+
76
76
  hash1
77
77
  end
78
-
78
+
79
79
  def self.truncate(str, length)
80
80
  ellipsis = '...'
81
-
81
+
82
82
  if str.length <= length or str.length <= ellipsis.length
83
83
  return str
84
84
  end
85
-
85
+
86
86
  str.unpack("U*").slice(0, length - ellipsis.length).pack("U*") + ellipsis
87
87
  end
88
88
  end
@@ -1,3 +1,3 @@
1
1
  module Rollbar
2
- VERSION = "1.2.11"
2
+ VERSION = "1.2.12"
3
3
  end
data/lib/rollbar.rb CHANGED
@@ -599,7 +599,10 @@ module Rollbar
599
599
  end
600
600
 
601
601
  def dump_payload(payload)
602
- result = Truncation.truncate(payload)
602
+ # Ensure all keys are strings since we can receive the payload inline or
603
+ # from an async handler job, which can be serialized.
604
+ stringified_payload = Rollbar::Util::Hash.deep_stringify_keys(payload)
605
+ result = Truncation.truncate(stringified_payload)
603
606
  return result unless Truncation.truncate?(result)
604
607
 
605
608
  original_size = MultiJson.dump(payload).bytesize
data/rollbar.gemspec CHANGED
@@ -27,4 +27,5 @@ Gem::Specification.new do |gem|
27
27
  gem.add_development_dependency 'sinatra'
28
28
  gem.add_development_dependency 'resque'
29
29
  gem.add_development_dependency 'delayed_job'
30
+ gem.add_development_dependency 'rake', '>= 0.9.0'
30
31
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+ require 'rollbar/rake'
3
+
4
+ describe Rollbar::Rake do
5
+ let(:application) { Rake::Application.new }
6
+ let(:exception) { Exception.new }
7
+
8
+ context 'with supported rake version' do
9
+ before do
10
+ allow(Rollbar::Rake).to receive(:rake_version).and_return('0.9.0')
11
+ end
12
+
13
+ it 'reports error to Rollbar' do
14
+ expect(Rollbar::Rake).not_to receive(:skip_patch)
15
+ expect(Rollbar).to receive(:error).with(exception)
16
+ expect(application).to receive(:orig_display_error_message).with(exception)
17
+
18
+ Rollbar::Rake.patch! # Really here Rake is already patched
19
+ application.display_error_message(exception)
20
+ end
21
+ end
22
+
23
+ context 'with unsupported rake version' do
24
+ before do
25
+ allow(Rollbar::Rake).to receive(:rake_version).and_return('0.8.7')
26
+ end
27
+
28
+ it 'reports error to Rollbar' do
29
+ expect(Rollbar::Rake).to receive(:skip_patch)
30
+
31
+ Rollbar::Rake.patch!
32
+ end
33
+ end
34
+ end
@@ -9,16 +9,16 @@ describe Rollbar::Truncation::FramesStrategy do
9
9
  describe '.call', :fixture => :payload do
10
10
  context 'with trace key' do
11
11
  let(:payload_fixture) { 'payloads/sample.trace.json' }
12
- let(:frames) { payload['data'][:body][:trace][:frames].clone }
12
+ let(:frames) { payload['data']['body']['trace']['frames'].clone }
13
13
 
14
14
  before do
15
- payload['data'][:body][:trace][:frames] = expand_frames(frames)
15
+ payload['data']['body']['trace']['frames'] = expand_frames(frames)
16
16
  end
17
17
 
18
18
  it 'returns a new payload with 300 frames' do
19
- result = symbolize_recursive(MultiJson.load(described_class.call(payload)))
19
+ result = MultiJson.load(described_class.call(payload))
20
20
 
21
- new_frames = result[:data][:body][:trace][:frames]
21
+ new_frames = result['data']['body']['trace']['frames']
22
22
 
23
23
  expect(new_frames.count).to be_eql(300)
24
24
  expect(new_frames.first).to be_eql(frames.first)
@@ -29,19 +29,19 @@ describe Rollbar::Truncation::FramesStrategy do
29
29
  context 'with trace_chain key' do
30
30
  let(:payload_fixture) { 'payloads/sample.trace_chain.json' }
31
31
 
32
- let(:frames1) { payload['data'][:body][:trace_chain][0][:frames].clone }
33
- let(:frames2) { payload['data'][:body][:trace_chain][1][:frames].clone }
32
+ let(:frames1) { payload['data']['body']['trace_chain'][0]['frames'].clone }
33
+ let(:frames2) { payload['data']['body']['trace_chain'][1]['frames'].clone }
34
34
 
35
35
  before do
36
- payload['data'][:body][:trace_chain][0][:frames] = expand_frames(frames1)
37
- payload['data'][:body][:trace_chain][1][:frames] = expand_frames(frames2)
36
+ payload['data']['body']['trace_chain'][0]['frames'] = expand_frames(frames1)
37
+ payload['data']['body']['trace_chain'][1]['frames'] = expand_frames(frames2)
38
38
  end
39
39
 
40
40
  it 'returns a new payload with 300 frames for each chain item' do
41
- result = symbolize_recursive(MultiJson.load(described_class.call(payload)))
41
+ result = MultiJson.load(described_class.call(payload))
42
42
 
43
- new_frames1 = result[:data][:body][:trace_chain][0][:frames]
44
- new_frames2 = result[:data][:body][:trace_chain][1][:frames]
43
+ new_frames1 = result['data']['body']['trace_chain'][0]['frames']
44
+ new_frames2 = result['data']['body']['trace_chain'][1]['frames']
45
45
 
46
46
  expect(new_frames1.count).to be_eql(300)
47
47
  expect(new_frames1.first).to be_eql(frames1.first)
@@ -7,40 +7,40 @@ describe Rollbar::Truncation::MinBodyStrategy do
7
7
 
8
8
  context 'with trace key ' do
9
9
  let(:payload_fixture) { 'payloads/sample.trace.json' }
10
- let!(:frames) { payload['data'][:body][:trace][:frames].clone }
10
+ let!(:frames) { payload['data']['body']['trace']['frames'].clone }
11
11
 
12
12
  before do
13
- payload['data'][:body][:trace][:exception][:message] = message
13
+ payload['data']['body']['trace']['exception']['message'] = message
14
14
  end
15
15
 
16
16
  it 'truncates the exception message and frames array' do
17
- result = symbolize_recursive(MultiJson.load(described_class.call(payload)))
17
+ result = MultiJson.load(described_class.call(payload))
18
18
 
19
- trace = result[:data][:body][:trace]
20
- expect(trace[:frames]).to have(2).items
21
- expect(trace[:exception][:message]).to be_eql('a' * 255)
19
+ trace = result['data']['body']['trace']
20
+ expect(trace['frames']).to have(2).items
21
+ expect(trace['exception']['message']).to be_eql('a' * 255)
22
22
  end
23
23
  end
24
24
 
25
25
  context 'with trace_chain key ' do
26
26
  let(:payload_fixture) { 'payloads/sample.trace_chain.json' }
27
- let!(:frames1) { payload['data'][:body][:trace_chain][0][:frames].clone }
28
- let!(:frames2) { payload['data'][:body][:trace_chain][1][:frames].clone }
27
+ let!(:frames1) { payload['data']['body']['trace_chain'][0]['frames'].clone }
28
+ let!(:frames2) { payload['data']['body']['trace_chain'][1]['frames'].clone }
29
29
 
30
30
  before do
31
- payload['data'][:body][:trace_chain][0][:exception][:message] = message
32
- payload['data'][:body][:trace_chain][1][:exception][:message] = message
31
+ payload['data']['body']['trace_chain'][0]['exception']['message'] = message
32
+ payload['data']['body']['trace_chain'][1]['exception']['message'] = message
33
33
  end
34
34
 
35
35
  it 'truncates the exception message and frames array' do
36
- result = symbolize_recursive(MultiJson.load(described_class.call(payload)))
36
+ result = MultiJson.load(described_class.call(payload))
37
37
 
38
- traces = result[:data][:body][:trace_chain]
39
- expect(traces[0][:frames]).to have(2).items
40
- expect(traces[0][:exception][:message]).to be_eql('a' * 255)
38
+ traces = result['data']['body']['trace_chain']
39
+ expect(traces[0]['frames']).to have(2).items
40
+ expect(traces[0]['exception']['message']).to be_eql('a' * 255)
41
41
 
42
- expect(traces[1][:frames]).to have(2).items
43
- expect(traces[1][:exception][:message]).to be_eql('a' * 255)
42
+ expect(traces[1]['frames']).to have(2).items
43
+ expect(traces[1]['exception']['message']).to be_eql('a' * 255)
44
44
  end
45
45
  end
46
46
  end
@@ -8,36 +8,36 @@ describe Rollbar::Truncation::StringsStrategy do
8
8
  let(:long_message) { 'a' * 2000 }
9
9
  let(:payload) do
10
10
  {
11
- :truncated => long_message,
12
- :not_truncated => '123456',
13
- :hash => {
14
- :inner_truncated => long_message,
15
- :inner_not_truncated => '567',
16
- :array => ['12345678', '12', { :inner_inner => long_message }]
11
+ 'truncated' => long_message,
12
+ 'not_truncated' => '123456',
13
+ 'hash' => {
14
+ 'inner_truncated' => long_message,
15
+ 'inner_not_truncated' => '567',
16
+ 'array' => ['12345678', '12', { 'inner_inner' => long_message }]
17
17
  }
18
18
  }
19
19
  end
20
20
 
21
21
  it 'should truncate all nested strings in the payload' do
22
- result = symbolize_recursive(MultiJson.load(described_class.call(payload)))
22
+ result = MultiJson.load(described_class.call(payload))
23
23
 
24
- expect(result[:truncated].size).to be_eql(1024)
25
- expect(result[:hash][:inner_truncated].size).to be_eql(1024)
26
- expect(result[:hash][:array][2][:inner_inner].size).to be_eql(1024)
24
+ expect(result['truncated'].size).to be_eql(1024)
25
+ expect(result['hash']['inner_truncated'].size).to be_eql(1024)
26
+ expect(result['hash']['array'][2]['inner_inner'].size).to be_eql(1024)
27
27
  end
28
28
 
29
29
  context 'with utf8 strings' do
30
30
  let(:long_message) { 'Ŝǻмρļẻ śţяịņģ' + 'a' * 2000 }
31
31
  let(:payload) do
32
32
  {
33
- :truncated => long_message,
34
- :not_truncated => '123456',
33
+ 'truncated' => long_message,
34
+ 'not_truncated' => '123456',
35
35
  }
36
36
  end
37
37
 
38
38
  it 'should truncate utf8 strings properly' do
39
- result = symbolize_recursive(MultiJson.load(described_class.call(payload)))
40
- expect(result[:truncated]).to match(/^Ŝǻмρļẻ śţяịņģa*\.{3}/)
39
+ result = MultiJson.load(described_class.call(payload))
40
+ expect(result['truncated']).to match(/^Ŝǻмρļẻ śţяịņģa*\.{3}/)
41
41
  end
42
42
  end
43
43
 
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'rollbar/util/hash'
3
+
4
+ describe Rollbar::Util::Hash do
5
+ let(:value) do
6
+ {
7
+ :foo => 'bar',
8
+ :bar => {
9
+ :foo => 'bar',
10
+ :bar => [{:foo => 'bar'}]
11
+ },
12
+ }
13
+ end
14
+
15
+ it 'converts the symbol keys to string' do
16
+ new_hash = described_class.deep_stringify_keys(value)
17
+
18
+ expect(new_hash['foo']).to be_eql('bar')
19
+ expect(new_hash['bar']['foo']).to be_eql('bar')
20
+ expect(new_hash['bar']['bar'][0]['foo']).to be_eql('bar')
21
+ end
22
+ end
@@ -7,21 +7,4 @@ module FixtureHelpers
7
7
  def load_payload_fixture(relative_path)
8
8
  MultiJson.load(File.read(fixture_file(relative_path)))
9
9
  end
10
-
11
- def symbolize_recursive(hash)
12
- {}.tap do |h|
13
- hash.each { |key, value| h[key.to_sym] = map_value(value) }
14
- end
15
- end
16
-
17
- def map_value(thing)
18
- case thing
19
- when Hash
20
- symbolize_recursive(thing)
21
- when Array
22
- thing.map { |v| map_value(v) }
23
- else
24
- thing
25
- end
26
- end
27
10
  end
@@ -5,7 +5,7 @@ end
5
5
  shared_context 'payload from fixture', :fixture => :payload do
6
6
  let(:payload) do
7
7
  {
8
- 'data' => symbolize_recursive(load_payload_fixture(payload_fixture)),
8
+ 'data' => load_payload_fixture(payload_fixture),
9
9
  'access_token' => 'the-token'
10
10
  }
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rollbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.11
4
+ version: 1.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rollbar, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-02 00:00:00.000000000 Z
11
+ date: 2014-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: 0.9.0
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: 0.9.0
167
181
  description: Rails plugin to catch and send exceptions to Rollbar
168
182
  email:
169
183
  - support@rollbar.com
@@ -226,6 +240,7 @@ files:
226
240
  - lib/rollbar/truncation/raw_strategy.rb
227
241
  - lib/rollbar/truncation/strings_strategy.rb
228
242
  - lib/rollbar/util.rb
243
+ - lib/rollbar/util/hash.rb
229
244
  - lib/rollbar/version.rb
230
245
  - rollbar.gemspec
231
246
  - spec/controllers/home_controller_spec.rb
@@ -293,10 +308,12 @@ files:
293
308
  - spec/rollbar/logger_proxy_spec.rb
294
309
  - spec/rollbar/middleware/rack/builder_spec.rb
295
310
  - spec/rollbar/middleware/sinatra_spec.rb
311
+ - spec/rollbar/rake_spec.rb
296
312
  - spec/rollbar/truncation/frames_strategy_spec.rb
297
313
  - spec/rollbar/truncation/min_body_strategy_spec.rb
298
314
  - spec/rollbar/truncation/strings_strategy_spec.rb
299
315
  - spec/rollbar/truncation_spec.rb
316
+ - spec/rollbar/util/hash_spec.rb
300
317
  - spec/rollbar_bc_spec.rb
301
318
  - spec/rollbar_spec.rb
302
319
  - spec/spec_helper.rb
@@ -394,10 +411,12 @@ test_files:
394
411
  - spec/rollbar/logger_proxy_spec.rb
395
412
  - spec/rollbar/middleware/rack/builder_spec.rb
396
413
  - spec/rollbar/middleware/sinatra_spec.rb
414
+ - spec/rollbar/rake_spec.rb
397
415
  - spec/rollbar/truncation/frames_strategy_spec.rb
398
416
  - spec/rollbar/truncation/min_body_strategy_spec.rb
399
417
  - spec/rollbar/truncation/strings_strategy_spec.rb
400
418
  - spec/rollbar/truncation_spec.rb
419
+ - spec/rollbar/util/hash_spec.rb
401
420
  - spec/rollbar_bc_spec.rb
402
421
  - spec/rollbar_spec.rb
403
422
  - spec/spec_helper.rb