Report exceptions in production from crystal http servers to Bugsnag.
Add this to your application's shard.yml
:
dependencies:
bugsnag:
github: russ/bugsnag
- This is meant to catch exceptions in a compiled production environment.
- Dont use spawn to call Bugsnag.report, the http request sent to bugsnag will be done in a separate fiber. Building the report needs the context to remain open, and if
Bugsnag.report
is called in a spawn you will get a closed pipe error.
require "bugsnag"
Bugsnag.config do |conf|
conf.api_key = ENV["BUGSNAG_API_KEY"] # is automatically set by this environment variable if not specified
conf.name = "Application Name"
conf.version = "1.0"
conf.url = "https://my-website.com/"
conf.release_stage = "production"
end
# In your middleware
class MyMiddlware < MyFrameworkHandler
def call(context)
begin
call_next(context)
rescue ex
Bugsnag.report(context, ex)
raise ex
end
end
end
Optionally, you can customize the event
object by passing a block to report
.
Bugsnag.report(context, ex) do |event|
event.user = Bugsnag::User.new(id: "1", name: "Foo", email: "[email protected]")
end
- Fork it (https://github.com/fridgerator/bugsnag/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- fridgerator Nick Franken - creator, maintainer