rollbar 2.16.4 → 2.17.0

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: 670312ce31ce58d4bba264a778aa7f760233a368
4
- data.tar.gz: b9a553c4fdec208957f3369d21f25717ea6e6515
3
+ metadata.gz: 80c4468fc2e5243d35fc86e2f4787012d996ef58
4
+ data.tar.gz: 3469d5b5650578975879fa8962f499d7a1aea52c
5
5
  SHA512:
6
- metadata.gz: a0b506a1b5985109fb8fe4ea636172d92ad35afb318e9104c40fc3584650f6545d9756b3efe97a7513ebf7b495b355c62f477daf655bac9b95e74353db832904
7
- data.tar.gz: b00ce0173789ae771e5dd964d80e29fc8b2a0c10b34e532932fb30ed97fe49ed283e0744a20d0338b457f01d370f35a42d97e0a50929cec372fa083783c4543b
6
+ metadata.gz: 20890794849d8a1db3b4cf0947cf84e9c824d60e81ae4c65ebeca3cf6705357bf90b98d21185d8aa038d378f420799131884529a9eb525ca3630c4c1ecae7d3b
7
+ data.tar.gz: 62b215e34d6b9d30123bd79069e59fd284bf19ba870db97a78d88e9c91414b67daf32c9ebb9e910305b3baa9428954815c17c998504e7a12c4ba47e0bd8b0750
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
- # Rollbar-gem
1
+ # Rollbar-gem
2
2
  [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=master)](https://travis-ci.org/rollbar/rollbar-gem/branches)
3
+ [![Gem Version](https://badge.fury.io/rb/rollbar.svg)](http://badge.fury.io/rb/rollbar)
4
+ [![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=rollbar&package-manager=bundler&version-scheme=semver&target-version=latest)](https://dependabot.com/compatibility-score.html?dependency-name=rollbar&package-manager=bundler&version-scheme=semver&new-version=latest)
3
5
 
4
6
  [Rollbar](https://rollbar.com) is a real-time exception reporting service for Ruby and other languages. The Rollbar service will alert you of problems with your code and help you understand them in a ways never possible before. We love it and we hope you will too.
5
7
 
@@ -13,7 +15,7 @@ Rollbar-gem is the SDK for Ruby apps and includes support for apps using Rails,
13
15
  ## Usage and Reference
14
16
 
15
17
  For complete usage instructions and configuration reference, see our [Ruby SDK docs](https://docs.rollbar.com/docs/ruby).
16
-
18
+
17
19
  ## Release History & Changelog
18
20
 
19
21
  See our [Releases](https://github.com/rollbar/rollbar-gem/releases) page for a list of all releases, including changes.
@@ -1 +1 @@
1
- !function(r){function e(n){if(o[n])return o[n].exports;var t=o[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}var o={};return e.m=r,e.c=o,e.p="",e(0)}([function(r,e,o){"use strict";var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.3.8/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,e){this.options=r,this._rollbarOldOnError=null;var o=s++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}function a(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(e);return n(function(){e.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),e.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=e.autoInstrument;return e.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[o]=t,t})()}}function l(r){return n(function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=o(2),s=0,d=o(3),c=function(r,e){return new t(r,e)},p=d.bind(null,c);t.prototype.loadFull=function(r,e,o,t,a){var l=function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,t,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(e);break}}"function"==typeof a&&a(e)},i=!1,s=e.createElement("script"),d=e.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,o||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw"string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e,e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,e){"use strict";function o(r,e,o){if(r){var t;"function"==typeof e._rollbarOldOnError?t=e._rollbarOldOnError:r.onerror&&!r.onerror.belongsToShim&&(t=r.onerror,e._rollbarOldOnError=t);var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};a.belongsToShim=o,r.onerror=a}}function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),e.handleUncaughtException.apply(e,n),o&&o.apply(r,n)}function t(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){t="[unhandledrejection] error getting `detail` from event"}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,e,o){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(e,r[t].prototype,o)}}function l(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports={captureUncaughtExceptions:o,captureUnhandledRejections:t,wrapGlobals:a}},function(r,e){"use strict";function o(r,e){this.impl=r(e,this),this.options=e,n(o.prototype)}function n(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}o.prototype._swapAndProcessMessages=function(r,e){this.impl=r(this.options);for(var o,n,t;o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=o},function(r,e){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){r=r||{};for(var o,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);
1
+ !function(r){function e(n){if(o[n])return o[n].exports;var t=o[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}var o={};return e.m=r,e.c=o,e.p="",e(0)}([function(r,e,o){"use strict";var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.4.4/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,e){this.options=r,this._rollbarOldOnError=null;var o=s++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}function a(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(e);return n(function(){e.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),e.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=e.autoInstrument;return e.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[o]=t,t})()}}function l(r){return n(function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=o(2),s=0,d=o(3),c=function(r,e){return new t(r,e)},p=function(r){return new d(c,r)};t.prototype.loadFull=function(r,e,o,t,a){var l=function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,t,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(e);break}}"function"==typeof a&&a(e)},i=!1,s=e.createElement("script"),d=e.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,o||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw e&&("string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e),e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,e){"use strict";function o(r,e,o){if(r){var t;if("function"==typeof e._rollbarOldOnError)t=e._rollbarOldOnError;else if(r.onerror){for(t=r.onerror;t._rollbarOldOnError;)t=t._rollbarOldOnError;e._rollbarOldOnError=t}var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};o&&(a._rollbarOldOnError=t),r.onerror=a}}function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),e.handleUncaughtException.apply(e,n),o&&o.apply(r,n)}function t(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){t="[unhandledrejection] error getting `detail` from event"}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,e,o){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(e,r[t].prototype,o)}}function l(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports={captureUncaughtExceptions:o,captureUnhandledRejections:t,wrapGlobals:a}},function(r,e){"use strict";function o(r,e){this.impl=r(e,this),this.options=e,n(o.prototype)}function n(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}o.prototype._swapAndProcessMessages=function(r,e){this.impl=r(this.options);for(var o,n,t;o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=o},function(r,e){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){r=r||{};for(var o,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);
@@ -64,6 +64,12 @@ end
64
64
  What logger to use for printing debugging and informational messages during
65
65
  operation.
66
66
 
67
+ ### logger_level
68
+
69
+ **Default** `:info`
70
+
71
+ Regardless of what Logger you're using, Rollbar will not proxy logs to it if its less than this particular level.
72
+
67
73
  ### disable_monkey_patch
68
74
 
69
75
  **Default** `false`
@@ -12,6 +12,7 @@ module Rollbar
12
12
  attr_accessor :custom_data_method
13
13
  attr_accessor :delayed_job_enabled
14
14
  attr_accessor :default_logger
15
+ attr_reader :logger_level
15
16
  attr_accessor :disable_monkey_patch
16
17
  attr_accessor :disable_rack_monkey_patch
17
18
  attr_accessor :disable_core_monkey_patch
@@ -74,6 +75,7 @@ module Rollbar
74
75
  @code_version = nil
75
76
  @custom_data_method = nil
76
77
  @default_logger = lambda { ::Logger.new(STDERR) }
78
+ @logger_level = :info
77
79
  @delayed_job_enabled = true
78
80
  @disable_monkey_patch = false
79
81
  @disable_core_monkey_patch = false
@@ -179,8 +181,11 @@ module Rollbar
179
181
  @async_handler = Rollbar::Delay::Resque
180
182
  end
181
183
 
182
- def use_shoryuken
184
+ def use_shoryuken(options = {})
183
185
  require 'rollbar/delay/shoryuken' if defined?(Shoryuken)
186
+
187
+ Rollbar::Delay::Shoryuken.queue = options[:queue] if options[:queue]
188
+
184
189
  @use_async = true
185
190
  @async_handler = Rollbar::Delay::Shoryuken
186
191
  end
@@ -247,6 +252,10 @@ module Rollbar
247
252
  send(option)
248
253
  end
249
254
 
255
+ def logger_level=(level)
256
+ @logger_level = level.to_sym
257
+ end
258
+
250
259
  def logger
251
260
  @logger ||= default_logger.call
252
261
  end
@@ -8,22 +8,28 @@ module Rollbar
8
8
  class Shoryuken
9
9
  include ::Shoryuken::Worker
10
10
 
11
- def self.queue_name
12
- "rollbar_#{Rollbar.configuration.environment}"
11
+ class << self
12
+ attr_accessor :queue
13
+ end
14
+
15
+ self.queue = "rollbar_#{Rollbar.configuration.environment}"
16
+
17
+ def self.call(payload)
18
+ new.call(payload, :queue => queue)
19
+ end
20
+
21
+ def call(payload, options = {})
22
+ self.class.perform_async(payload, options)
13
23
  end
14
24
 
15
25
  # not allowing bulk, to not double-report rollbars if one of them failed in bunch.
16
- shoryuken_options :queue => queue_name, :auto_delete => true, :body_parser => :json, :retry_intervals => [60, 180, 360, 120_0, 360_0, 186_00]
26
+ shoryuken_options :auto_delete => true,
27
+ :body_parser => :json,
28
+ :retry_intervals => [60, 180, 360, 120_0, 360_0, 186_00]
17
29
 
18
- ## responsible for performing job. - payload is a json parsed body of the message.
19
30
  def perform(_sqs_message, payload)
20
31
  Rollbar.process_from_async_handler(payload)
21
32
  end
22
-
23
- ## to push the job !
24
- def call(payload)
25
- self.class.perform_async(payload)
26
- end
27
33
  end
28
34
  end
29
35
  end
@@ -23,12 +23,21 @@ module Rollbar
23
23
  end
24
24
 
25
25
  def log(level, message)
26
- return unless Rollbar.configuration.enabled
26
+ return unless Rollbar.configuration.enabled && acceptable_levels.include?(level.to_sym)
27
27
 
28
28
  @object.send(level, message)
29
29
  rescue
30
30
  puts "[Rollbar] Error logging #{level}:"
31
31
  puts "[Rollbar] #{message}"
32
32
  end
33
+
34
+ protected
35
+
36
+ def acceptable_levels
37
+ @acceptable_levels ||= begin
38
+ levels = [:debug, :info, :warn, :error]
39
+ levels[levels.find_index(Rollbar.configuration.logger_level)..-1]
40
+ end
41
+ end
33
42
  end
34
43
  end
@@ -157,8 +157,8 @@ module Rollbar
157
157
  def append_nonce?
158
158
  defined?(::SecureHeaders) && ::SecureHeaders.respond_to?(:content_security_policy_script_nonce) &&
159
159
  defined?(::SecureHeaders::Configuration) &&
160
- !::SecureHeaders::Configuration.get.csp.opt_out? &&
161
- !::SecureHeaders::Configuration.get.current_csp[:script_src].to_a.include?("'unsafe-inline'")
160
+ !::SecureHeaders::Configuration.default.csp.opt_out? &&
161
+ !::SecureHeaders::Configuration.default.current_csp[:script_src].to_a.include?("'unsafe-inline'")
162
162
  end
163
163
  end
164
164
  end
@@ -339,7 +339,7 @@ module Rollbar
339
339
  message = arg
340
340
  elsif arg.is_a?(Exception)
341
341
  exception = arg
342
- elsif RUBY_PLATFORM == 'java' && arg.is_a?(java.lang.Exception)
342
+ elsif RUBY_PLATFORM == 'java' && arg.is_a?(java.lang.Throwable)
343
343
  exception = arg
344
344
  elsif arg.is_a?(Hash)
345
345
  extra = arg
@@ -39,8 +39,11 @@ module Rollbar
39
39
  end
40
40
 
41
41
  def self.skip_report?(job_hash, e)
42
- !job_hash.nil? && (job_hash['retry'] && job_hash['retry_count'] &&
43
- job_hash['retry_count'] < ::Rollbar.configuration.sidekiq_threshold)
42
+ return false if job_hash.nil?
43
+ # when rollbar middleware catches, sidekiq's retry_job processor hasn't set
44
+ # the retry_count for the current job yet, so adding 1 gives the actual retry count
45
+ actual_retry_count = job_hash.fetch('retry_count', -1) + 1
46
+ job_hash['retry'] && actual_retry_count < ::Rollbar.configuration.sidekiq_threshold
44
47
  end
45
48
 
46
49
  def call(worker, msg, queue)
@@ -1,3 +1,3 @@
1
1
  module Rollbar
2
- VERSION = '2.16.4'
2
+ VERSION = '2.17.0'
3
3
  end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ begin
4
+ require 'rollbar/delay/shoryuken'
5
+ rescue LoadError
6
+ module Rollbar
7
+ module Delay
8
+ class Shoryuken; end
9
+ end
10
+ end
11
+ end
12
+
13
+ describe Rollbar::Delay::Shoryuken, :if => RUBY_VERSION != '1.8.7' && RUBY_VERSION != '1.9.2' do
14
+ describe '.call' do
15
+ let(:payload) do
16
+ { :key => 'value' }
17
+ end
18
+
19
+ let(:loaded_hash) do
20
+ Rollbar::JSON.load(Rollbar::JSON.dump(payload))
21
+ end
22
+
23
+ it 'process the payload' do
24
+ Shoryuken.worker_executor = Shoryuken::Worker::InlineExecutor
25
+ expect(Rollbar).to receive(:process_from_async_handler).with(loaded_hash)
26
+ described_class.call(payload)
27
+ Shoryuken.worker_executor = Shoryuken::Worker::DefaultExecutor
28
+ end
29
+
30
+ context 'with non-default queue name' do
31
+ let(:sqs_queue) { double('non_default_queue') }
32
+
33
+ before do
34
+ Rollbar.configure { |config| config.use_shoryuken(:queue => 'non_default_queue') }
35
+ end
36
+
37
+ it 'uses specified queue' do
38
+ expect(Shoryuken::Client).to receive(:queues).with('non_default_queue').and_return(sqs_queue)
39
+ expect(sqs_queue).to receive(:send_message)
40
+ described_class.call(payload)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -8,6 +8,7 @@ describe Rollbar::LoggerProxy do
8
8
 
9
9
  before do
10
10
  allow(Rollbar.configuration).to receive(:enabled).and_return(true)
11
+ allow(Rollbar.configuration).to receive(:logger_level).and_return(:debug)
11
12
  end
12
13
 
13
14
  shared_examples 'delegate to logger' do
@@ -46,5 +47,23 @@ describe Rollbar::LoggerProxy do
46
47
  expect { subject.log('info', message) }.not_to raise_error
47
48
  end
48
49
  end
50
+
51
+ context 'if logger_level is :info' do
52
+ before do
53
+ allow(Rollbar.configuration).to receive(:logger_level).and_return(:info)
54
+ end
55
+
56
+ it 'doesnt call the logger (debug)' do
57
+ expect(logger).to_not receive(:debug)
58
+
59
+ subject.log('debug', 'foo')
60
+ end
61
+
62
+ it 'calls the logger (error)' do
63
+ expect(logger).to receive(:error)
64
+
65
+ subject.log('error', 'foo')
66
+ end
67
+ end
49
68
  end
50
69
  end
@@ -177,7 +177,7 @@ END
177
177
  Object.const_set('SecureHeaders', Module.new)
178
178
  SecureHeaders.const_set('VERSION', '3.0.0')
179
179
  SecureHeaders.const_set('Configuration', Module.new {
180
- def self.get
180
+ def self.default
181
181
  end
182
182
  })
183
183
  allow(SecureHeaders).to receive(:content_security_policy_script_nonce) { 'lorem-ipsum-nonce' }
@@ -189,7 +189,7 @@ END
189
189
 
190
190
  it 'renders the snippet and config in the response with nonce in script tag when SecureHeaders installed' do
191
191
  secure_headers_config = double(:configuration, :current_csp => {}, :csp => double(:opt_out? => false))
192
- allow(SecureHeaders::Configuration).to receive(:get).and_return(secure_headers_config)
192
+ allow(SecureHeaders::Configuration).to receive(:default).and_return(secure_headers_config)
193
193
  res_status, res_headers, response = subject.call(env)
194
194
 
195
195
  new_body = response.body.join
@@ -205,7 +205,7 @@ END
205
205
  :script_src => %w('unsafe-inline')
206
206
  },
207
207
  :csp => double(:opt_out? => false))
208
- allow(SecureHeaders::Configuration).to receive(:get).and_return(secure_headers_config)
208
+ allow(SecureHeaders::Configuration).to receive(:default).and_return(secure_headers_config)
209
209
 
210
210
  res_status, res_headers, response = subject.call(env)
211
211
  new_body = response.body.join
@@ -219,7 +219,7 @@ END
219
219
 
220
220
  it 'renders the snippet in the response without nonce if SecureHeaders CSP is OptOut' do
221
221
  secure_headers_config = double(:configuration, :csp => double(:opt_out? => true))
222
- allow(SecureHeaders::Configuration).to receive(:get).and_return(secure_headers_config)
222
+ allow(SecureHeaders::Configuration).to receive(:default).and_return(secure_headers_config)
223
223
 
224
224
  res_status, res_headers, response = subject.call(env)
225
225
  new_body = response.body.join
@@ -42,11 +42,22 @@ describe Rollbar::Notifier do
42
42
  end
43
43
 
44
44
  if RUBY_PLATFORM == 'java'
45
- describe "#extract_arguments" do
46
- it "extracts Java exceptions" do
45
+ describe '#extract_arguments' do
46
+ # See https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html
47
+ # for more background
48
+ it 'extracts java.lang.Exception' do
47
49
  begin
48
- raise java.lang.Exception.new("Hello")
49
- rescue java.lang.Exception => e
50
+ raise java.lang.Exception.new('Hello')
51
+ rescue => e
52
+ message, exception, extra = Rollbar::Notifier.new.send(:extract_arguments, [e])
53
+ expect(exception).to eq(e)
54
+ end
55
+ end
56
+
57
+ it 'extracts java.lang.Error' do
58
+ begin
59
+ raise java.lang.AssertionError.new('Hello')
60
+ rescue java.lang.Error => e
50
61
  message, exception, extra = Rollbar::Notifier.new.send(:extract_arguments, [e])
51
62
  expect(exception).to eq(e)
52
63
  end
@@ -107,7 +107,7 @@ describe Rollbar::Sidekiq, :reconfigure_notifier => false do
107
107
 
108
108
  context 'with a sidekiq_threshold set' do
109
109
  before do
110
- Rollbar.configuration.sidekiq_threshold = 2
110
+ Rollbar.configuration.sidekiq_threshold = 3
111
111
  end
112
112
 
113
113
  it 'does not send error to rollbar under the threshold' do
@@ -140,16 +140,14 @@ describe Rollbar::Sidekiq, :reconfigure_notifier => false do
140
140
  )
141
141
  end
142
142
 
143
- it 'does not blow up and sends the error to rollbar if retry is true but there is no retry count' do
143
+ it "does not blow up and doesn't send the error to rollbar if retry is true but there is no retry count" do
144
144
  allow(Rollbar).to receive(:scope).and_return(rollbar)
145
- expect(rollbar).to receive(:error)
145
+ expect(rollbar).to receive(:error).never
146
146
 
147
- expect do
148
- described_class.handle_exception(
149
- { :job => { 'retry' => true } },
150
- exception
151
- )
152
- end.to_not raise_error
147
+ described_class.handle_exception(
148
+ { :job => { 'retry' => true } },
149
+ exception
150
+ )
153
151
  end
154
152
  end
155
153
  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: 2.16.4
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rollbar, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-30 00:00:00.000000000 Z
11
+ date: 2018-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -215,6 +215,7 @@ files:
215
215
  - spec/rollbar/delay/delayed_job_spec.rb
216
216
  - spec/rollbar/delay/girl_friday_spec.rb
217
217
  - spec/rollbar/delay/resque_spec.rb
218
+ - spec/rollbar/delay/shoryuken_spec.rb
218
219
  - spec/rollbar/delay/thread_spec.rb
219
220
  - spec/rollbar/encoding/encoder_spec.rb
220
221
  - spec/rollbar/item/backtrace_spec.rb
@@ -366,6 +367,7 @@ test_files:
366
367
  - spec/rollbar/delay/delayed_job_spec.rb
367
368
  - spec/rollbar/delay/girl_friday_spec.rb
368
369
  - spec/rollbar/delay/resque_spec.rb
370
+ - spec/rollbar/delay/shoryuken_spec.rb
369
371
  - spec/rollbar/delay/thread_spec.rb
370
372
  - spec/rollbar/encoding/encoder_spec.rb
371
373
  - spec/rollbar/item/backtrace_spec.rb