Change:
- Add default scrub fields, "api_key" and "access_token". See #348.
Bug fix:
- Fix crash when sidekik job has
retry
key but notretry_count
. See #346.
Bug fix:
- Don't skip delayed_job reports if attempts > dj_threshold. See #340.
Features
- Sidekiq threshold for retried jobs. Allows you define a minimum number of retries to start reporting errors to Rollbar. See #336.
- User IP obfuscator. See #331 and #338.
Bug fixes:
- Use ACCEPT header to check json requests. See #328
- Fix URL scrubbing when using a malformed URL. See #328
Bug fix:
- Fix Rollbar::JSON for MultiJson <= 1.6.0. See #328
Features:
Bug fixes:
- Fix Rollbar::JSON so it resolves the correct options module. See #321
- Fix SSL verify mode. See #320 and #326
Features:
- Allow custom revision name on capistrano integration. See #312
Internal changes:
- Restore MultiJson and add custom option modules. Fix #303. See #304
- Don't require rollbar/rails on initializer. See #310
- Fix delayed_job tests for delayed_job >= 4.1. See #309
Documentation:
- Change README.md and template to use 'default' Sidekiq queue. See #306
Bug fixes:
- Remove better errors hook. This was causing to report twice the errors. See #313
Internal changes:
- Use Oj instead of JSON gem for payload serializing. See #300
- Send nearest backtrace entry on failsafe messages. See #290
- Remove whitespace from config template. See #295
Bug fixes:
- Send correct hash value for delayed job 'handler' object. See #301
- Fix delayed_job crash reports. See #293
- Send session data instead of session store options. #289
Improvement:
- Speed-up payload encoding. See #285
New features:
- Raise internal exceptions when processing reports from async handlers, instead of swallowing them. This allows queue systems (e.g. Sidekiq, Resque) to track and retry errored jobs. See #282
- Send the error class name when reporting internal errors. See #283
Bug fix:
- Allow having multiple uploads for the same parameter. Thanks @mdominiak.
Bug fix:
- Don't swallow exceptions on
Rollbar::ActiveJob
module. With this fix we don't break the ActiveJob backends' features like retries.
New feature:
- If you use
ActiveJob
, you can now include theRollbar::ActiveJob
module into your ActiveJob classes. Then, errors happening in your jobs will be automatically reported to Rollbar.
Bug fixes:
- Fix capistrano task cause a namespace conflict between JSON and Rollbar::JSON.
Bug fixes:
- Remove requires for multi_json gem. Thanks @albertyw.
Possibly breaking changes:
- If active_support version < 4.1.0 is installed, this gem will now monkeypatch
BasicSocket#to_json
. This is needed to work around a bug causing JSON serialization to fail when the payload contains a Socket instance. We don't expect this to break anything for anyone, unless you are using active_support version < 4.1.0 and also happened to be relying on the buggy Socket serialization behavior.
Bug fixes:
- Use the JSON gem or native by default. Along with the aforementioned monkeypatch, this fixes the existing bug in active_support < 4.1.0 serializing Socket instances. To disable the monkeypatch, set
config.disable_core_monkey_patch = true
. - Add Encoding module, with Encoder and LegacyEncoder classes. This fixes some issues with ISO-8859 strings
Other changes:
- Update README.md and warn about upgrade to capistrano >= 3.1
- Fix error in code example for custom Async handlers
Bug fixes:
- Run
rollbar-rails-runner
in the context ofRails
module so we avoid namespace conflicts. See #242
Bug fixes:
- Fix minimum body truncation strategy when the payload is a message without exception. See #240
Bug fixes:
- Fixed crashes when
Configuration#custom_data_method
fails. Now a report for that crash will be reported also. See #235
Bug fixes:
- Fixed support for extended unicode characters. See #234
Possible breaking changes:
- Some characters that previously were stripped are now encoded. This could cause some events to be grouped into new items by Rollbar.
Bug fixes:
- Fixed internal error reporting IpSpoofAttackErrors. See #233
- Removed duplicated
schedule_payload
definition. See #231
New features:
- Added configuration option to gather backtraces for exceptions that don't already have one (i.e. if you do
Rollbar.error(Exception.new)
). Setconfig.populate_empty_backtraces = true
to enable it. See #206
Bug fixes:
- Reverted capistrano change as it causes problems in some setups. See #210
Other:
- Refactored the Sidekiq handler (no changes to the interface). See #197
New features:
- The current thread's scope can now be modified using
Rollbar.scope!
. This can be used to provide context data which will be included if the current request/job/etc. later throws an exception. See #212
Bug fixes:
- Remove duplicate
#configure
definition. See #207 - In the capistrano task, don't override set variables. See #210
- Style fix in sidekiq handler. See #209
Bug fixes:
- Fix null 'context' in internal error reports. See #208
Bug fixes:
- Fix internal error when ActiveRecord was present, but not used. See #204
Possible breaking changes:
exception_level_filters
is now applied only to "uncaught" errors (i.e. those detected by middlewares) but not to direct calls toRollbar.error
. If you were previously usingRollbar.error
(orRollbar.warning
, etc.), the new behavior is probably desirable, but if it isn't, you can get the old behavior viaRollbar.error(e, :use_exception_level_filters => true)
. The middlewares that ship with the gem also now pass this new flag.
Bug fixes:
- Fix bug with the
write_to_file
method where values were dumped as ruby hashes instead of json. See #198
Bug fixes:
- Fix bug with smart truncation for messages. See #195 and #196
- Safely catch exceptions in
process_payload
when called from an async handler. See #196
Performance improvements:
- In the Rails, Rack, and Sinatra middlewares, request data is now gathered only when needed instead of in advance on every request. See #194; fixes #180
Possible breaking changes:
- If the scope's
:request
or:context
value is an object that responds to:call
, those values will now be called when a a report is made (and their result will be used in the payload). This is very unlikely to affect anyone, but we're releasing this as a version bump just to be safe.
New features:
- Person tracking for Rack/Sinatra apps. See #192
Bug fixes:
- Fix
rollbar:test
rake task (regression from 1.2.12); see 985c091
Bug fixes:
- Fix bug introduced in 1.2.11 that broke the sidekiq async handler. See #190
- Skip Rake monkeypatch for Rake < 0.9.0. Fixes #187
New features:
- Improved truncation algorithm, so that more kinds of large payloads will be successfully brought below the 128kb limit and successfully reported. See #185
Bug fixes:
- Fix issue where using Rollbar outside of a web process was prone to errors being silently ignored. See #183
Bug fixes:
- Fix bug introduced in 1.2.8 with Sidekiq version < 3. See #181
Bug fixes:
- Fix issue causing request and person data to not be collected for RoutingErrors. See #178
New features:
Bug fixes:
- Remove internal calls to deprecated methods. See #166
- Fix an intermittently failing test. See #167
- Fix configuration issue when an initializer calls
Thread.new
before Rollbar is initialized. See #170 and #168 - Fix infinite loop with cyclic inner exceptions. See #172
Bug fixes:
- Restore
exception_level_filters
feature, which was inadvertently removed in 1.2.0. See #160 - Fix bug where rollbar_url incorrectly handled comma-separated X-Forwarded-Proto header values. See #112
Bug fixes:
- Fix bug in non-Rails environments. See #155
- Fix intermittent test failures
Bug fixes:
- Fix issues handling hashes, arrays, and other values as the raw POST body. See #153
Bug fixes:
- Fix issue where requiring 'rack' unnecessarily broke things in non-rack apps. See #150
Bug fixes:
- Bring back
enforce_valid_utf8
, which got lost in the 1.2.0 upgrade. See #148 - Fix bug with raw post extraction for application/json requests. See #147
Bug fixes:
- Fix issue with delayed_job and Rollbar.report_exception (bug introduced in 1.2.0). See #145
- Explicitly require 'rack' in request_data_extractor. See #144
Bug fixes:
- Revert change made as part of 1.2.0 where all procs in the payload would be evaluated. See #143.
New features:
-
Added new, much nicer interface for sending exceptions and messages to Rollbar. This is a backwards-compatible release: the old interface (
report_message
,report_exception
,report_message_with_request
) is deprecated but will continue to work at least until 2.0.See the docs for basic and advanced usage for a guide to the new interface. If you've used rollbar.js, it will be familiar.
New features:
- Support nested exceptions for Ruby 2.1. See #136. NOTE: for exceptions that have causes, this will change how they are grouped in Rollbar. If you have custom grouping rules, they will need to be updated to replace
body.trace.exception
withbody.trace_chain[0].exception
to maintain the same behavior for these exceptions. - New feature:
failover_handlers
. You can specify a list of async handlers, which will be tried in sequence upon failure. See #135.
Bug fixes:
- Fix handling of utf8 sequences in payload symbols. See #131. Thanks @kroky for the fix and @jondeandres for reviewing.
- Fix logic bugs in assignments for
scrub_fields
andscrub_headers
. See #137
Bug fixes:
- Use the payload's access token for the X-Rollbar-Access-Token header, instead of the configured access token. Fixes an issue where payloads would be reported into the wrong project when sent via Resque. See #128. Thanks to @jondeandres for the fix.
Bug fixes:
- Strip out invalid UTF-8 characters from payload keys/values, fixes #85
Misc:
- Clean up some unused requires
- Bumping to 1.0 due to the suggestion in #119
- Sidekiq payload is no longer mutated when Rollbar reports a Sidekiq job exception
- Fix sucker_punch async reporting when using a forking application server such as Unicorn (
preload_app true
). Jobs are now instantiated for every report instead of a reused global job instance
- Silence warning when using project_gems= with regexp #120
- Hook for delayed_job no longer a plugin, will now only ever be initialized once
- New configuration option
delayed_job_enabled
that defaults to true - Potentially breaking change if using delayed_job: if you disabled the delayed_job plugin previously, please remove that code and instead set the new configuration option
delayed_job_enabled
to false
- Fix asynchronous reports with sidekiq version < 2.3.2
- Support for specifying multiple project_gems with regex #114
- Fix rake test task in production
- Report an additional simple error message in the rake test task
- Insert RollbarRequestStore middleware at the end in case the ActiveRecord ConnectionManagement middleware isn't used
- Scope Capistrano 3 task by server role #110
- Replace usage of
puts
with a configurable logger in different areas of the notifier - Fix error in
RollbarRequestStore
whenrollbar_person_data
isn't defined for a controller
- Scrub fields are now converted to a regular expression for broader param name matching
- Save ActionDispatch request_id in reports if present
- Added proper Sidekiq 3 error handler
- Removed usage of ActiveSupport's
Object#try
in different areas of the notifier - Added a configurable request timeout for reports (defaults to 3 seconds)
- Fix circular json exception handling in Rails 4.1
- Send X-Rollbar-Access-Token http header along with payloads
- Added ability to scrub request headers
- Added flag to disable reporting of Delayed::Job job data when handling uncaught exceptions that happen in jobs
- New
report_message_with_request
that allows reporting request and person data, similar toreport_exception
- Changed various exception handlers to catch
Exception
subclasses instead of onlyStandardError
s - Added Capistrano 3 support
- Add a little more debugging information for 'payload too large' errors
- Pushing new gem to fix errant 32kb size limit in the rubygems copy of 0.12.12
- Changes to support Engine Yard add-on setup
- Raise payload size limit to 128k
- Log payloads that are too large to be sent to Rollbar
- Don't record controller context if request route info isn't readily available (ex. non-Rails)
- Fixed delayed job regression introduced in 0.12.5 by re-raising caught exceptions
- Removed Active Support call introduced in 0.12.6 to remove rails dependency in
report_exception
- Added funcitonality to walk the payload and truncate strings to attempt to reduce size if the payload is too large (more than 32kb total)
- Fix error reporting errors when route controller or action is nil (bug introduced in 0.12.4)
- Added #78, added configuration option to ignore specific person exceptions
- Fixed SIGSEGV with the delayed_job plugin and Ruby 2.1.0
- Record controller context (controller#action) in reported items
- Change rollbar_request_store middleware to only grab required person data properties by using rollbar_person_data
- Added ability to specify level for manually reported exceptions
- Fix syntax error in
config.use_sidekiq
usage example
- Added #73, enhanced Sidekiq and SuckerPunch configuration. NOTE: The old
Rollbar::Configuration#use_sidekiq=
andRollbar::Configuration#use_sucker_punch=
methods are now deprecated, see the docs for updated usage information.
- Make sure the person method exists for the controller before trying to extract person data
- Remove ActiveRecord railtie requirement introduced in 0.11.6
- Adding new middleware that grabs possible database-hitting person data before the rake connection pool cleanup middleware
- Fix rake test task when Authlogic is present
- Respect different proxy headers when building the request url
- Make sure the environment is valid at item sending time so that it isn't set incorrectly during configuration
- Test rake task now works properly if force_ssl is true
config.exception_level_filters
can now take a callable instead of a string. The exception instance will be passed to the callable.
- Changed default environment name from
'production'
to'unspecified'
- Fixed compatability issue with better_errors 1.0
- Added
code_version
configuration setting
- Exclude HTTP_COOKIE header (since cookies are already included in parsed form)
- Fix usage of custom Sidekiq options
- Add support for sucker_punch asynchronous handling
- Fix regression introduced in 0.10.7 when ActiveRecord is not present.
- Better handling of internal errors. Internal errors (errors that occur while reporting something to Rollbar) are now themselves reported to Rollbar. If that fails, a failsafe message will be reported, and if that fails, the error will be logged as it is now.
- Fix bug reporting exceptions with backtraces containing frames that don't match our regex.
- Add ability to report form validation errors
- Add MIT license to gemspec
- Fix json dump when rack.errors is an IO stream
- Add built-in support for Sidekiq as async handler
- Fix exception in the exception catcher when Rollbar is disabled
- Rework how request params are extracted so that json params are properly extracted in rails 4.0
- Fix rollbar:test rake task
- Require hooks at configuration time instead of gem load time
- Fix regression in 0.10.0 reporting exceptions in development environments and rails < 3.2 apps.
- Fixed bug causing duplicate reports when used inside Rails in production with the default error pages. Bumping version to 0.10.0 in case this turns out to be backwards-incompatible for some use cases (i.e. for applications that were relying on the duplicate report that has now been removed).
- Added
custom_data_method
config option. If set, it should be a lambda that returns a hash. - Changed initializer template to disable reporting from the 'test' environment.
- Add test for PUT params
- Parse json params when content-type is application/json
- Fix concurrency issue
- Remove redundant
GET
andPOST
keys from request payload (they're already included inparams
)
- Fix compatibility issue with Rails 4 / Ruby 2 (thanks johnknott)
- Provide a default environment name when used outside of Rails and none is set
- Add :secret_token to default scrub_fields list
- Session params are now scrubbed
- Fix capistrano recipe on 1.9.2 (#36)
- Add example of disable "test" env to initializer template
- Fix bug introduced in 0.9.0 where setting
config.enabled = false
inconfig/initializers/rollbar.rb
would be overwritten by subsequent calls toRollbar.configure
(as happens normally when using inside Rails).
- Use
include?
instead ofin?
for filtering (see #34)
- Fix for Rails 4 support
- Support for configuring the access token with an environment variable.
- Fixed issue using rollbar-gem outside of Rails
- Clarified the "details: " link log message
- Added configuration setting to specify gems that should be considered part of the Rollbar project, making frames from these gems show up automatically uncollapsed in tracebacks appearing on the website.
- Added Capistrano integration
- Add support to play nicely with Better Errors.
- Behavior change: start configuration as
@enabled = false
, and set to true whenconfigure
is called. This addresses an issue using Rollbar without the environment initialized. Such reports would always fail (since there would be no access token), but now they won't be attempted.
- Relax multi_json dependency to 1.5.0
- Adding back rake task exception reporting after fixing load order issue
- Reverting rake task exception reporting until we can track down a load order issue reported by a few users
- Rename to rollbar
- Fix ratchetio:test rake task when project base controller is not called ApplicationController
- Exceptions in Rake tasks are now automatically reported.
- Bump multi_json dependency version to 1.6.0
- Bump multi_json dependency version to 1.5.1
- Added EventMachine support
- Added a log message containing a link to the instance. Copy-paste the link into your browser to view its details in Ratchet.
- Ratchetio.report_message now returns 'ignored' or 'error' instead of nil when a message is not reported for one of those reasons, for consistency with Ratchetio.report_exception.
- POSSIBLE BREAKING CHANGE: Ratchetio.report_exception now returns 'ignored', 'disabled', or 'error' instead of nil when the exception is not reported for one of those reasons. It still returns the payload upon success.
- Request data is now parsed from the rack environment instead of from within the controller, addressing issue #10.
- Add Sidekiq middleware for catching workers' exceptions
- Replaced activesupport dependency with multi_json
- Added activesupport dependency for use without Rails
- Added new default scrub params
- Add
Ratchetio.silenced
; which allows disabling reporting for a given block. See README for usage.
- Fix compat issue with delayed_job below version 3. Exceptions raised by delayed_job below version 3 will not be automatically caught; upgrade to v3 or catch and report by hand.
- Save the exception uuid in
env['ratchetio.exception_uuid']
for display in user-facing error pages.
- Add support to report exceptions raised in delayed_job.
- Allow exceptions with no backtrace (e.g. StandardError subclasses)
- Fix compatability issue with ruby 1.8
- Start including a UUID in reported exceptions
- Fix issue with scrub_fields, and add
:password_confirmation
to the default list
- Add ability to send reports asynchronously, using girl_friday or Threading by default.
- Add ability to save reports to a file (for use with ratchet-agent) instead of sending across to Ratchet servers.
- Sensitive params now scrubbed out of requests. Param name list is customizable via the
scrub_fields
config option.
- Add support to play nicely with Goalie.
- Add
default_logger
config option. It should be a lambda that will return the logger to use if no other logger is configured (i.e. no logger is set by the Railtie hook). Default:lambda { Logger.new(STDERR) }
- Add
enabled
runtime config flag. Whenfalse
, no data (messages or exceptions) will be reported.
- Add RSpec test suite. A few minor code changes.
- Add "ignore" filter level to completely ignore exceptions by class.
- Recursively filter files out of the params hash. Thanks to trisweb for the pull request.
-
Breaking change to make the "person" more configurable. If you were previously relying on your
current_member
method being called to return the person object, you will need to add the following line toconfig/initializers/ratchetio.rb
:config.person_method = "current_member"
-
Person id, username, and email method names are now configurable -- see README for details.