Honeybadger for Crystal
Typical installation time: ~2 minutes
Hi there! You’ve found Honeybadger’s guide to Crystal exception and error tracking. Once installed, Honeybadger will automatically report errors in your Crystal application.
Getting started
Section titled “Getting started”Installation
Section titled “Installation”Update your shard.yml to include honeybadger:
dependencies: honeybadger: github: honeybadger-io/honeybadger-crystalConfigure your API key (available under Project Settings in Honeybadger):
Honeybadger.configure do |config| config.api_key = ENV["HONEYBADGER_API_KEY"]? || "PROJECT_API_KEY" config.environment = ENV["HONEYBADGER_ENVIRONMENT"]? || "production"endReporting errors
Section titled “Reporting errors”Reporting errors in web frameworks
Section titled “Reporting errors in web frameworks”If you’re using a web framework, add the Honeybadger::Handler to the
HTTP::Server stack:
HTTP::Server.new([Honeybadger::Handler.new]) do |context| # ...endDetails for adding the handler to:
Reporting errors in Lucky Framework
Section titled “Reporting errors in Lucky Framework”-
Add the shard to
shard.yml -
Add
Honeybadger::AuthenticHandlerto your middleware stack:require "honeybadger"require "honeybadger/framework_handlers/authentic_handler.cr"def middleware : Array(HTTP::Handler)[# ...Lucky::ErrorHandler.new(action: Errors::Show),Honeybadger::AuthenticHandler.new,# ...] of HTTP::Handlerend
Read more about HTTP Handlers in Lucky here.
Reporting errors in Amber Framework
Section titled “Reporting errors in Amber Framework”Read more about Pipelines in Amber here.
Reporting errors manually
Section titled “Reporting errors manually”For non-web contexts, or to manually report exceptions to Honeybadger, use
Honeybadger.notify:
begin # run application code raise "OH NO!"rescue exception Honeybadger.notify(exception)endIdentifying users
Section titled “Identifying users”Honeybadger can track what users have encountered each error. To identify the
current user in error reports, add a user identifier and/or email address to
Honeybadger’s context hash:
# Explicit contextHoneybadger.notify(exception, context: { "user_id" => user.id, "user_email" => "user@example.com"})
# Managed contextHoneybadger.context(user_id: user.id)For an example of identifying users in HTTP handlers, see demo/http_context.cr
Learn more about context data in Honeybadger
Sending events to Honeybadger Insights
Section titled “Sending events to Honeybadger Insights”You can send custom events to Honeybadger Insights to track important business metrics and user actions in your application:
# Send a simple eventHoneybadger.event(name: "user.signup")
# Send an event with propertiesHoneybadger.event( name: "order.completed", total: 99.99, items: ["book", "shirt"], user_id: 123)Events are buffered and sent in batches to optimize performance. The buffer is flushed when either:
- 60 seconds have elapsed
- The buffer size exceeds 5MB
Events are sent asynchronously by default, so they won’t block your application’s execution.
Configuration
Section titled “Configuration”To set configuration options, use the Honeybadger.configure method:
Honeybadger.configure do |config| config.api_key = "PROJECT_API_KEY" config.environment = "production"endThe following configuration options are available:
| Name | Type | Default | Example | Environment Var |
|---|---|---|---|---|
| api_key | String | "" | "badgers" | HONEYBADGER_API_KEY |
| endpoint | Path|String | "https://api.honeybadger.io" | "https://honeybadger.example.com/" | HONEYBADGER_ENDPOINT |
| hostname | String | The hostname of the current server. | "badger" | HONEYBADGER_HOSTNAME |
| project_root | String | The current working directory | "/path/to/project" | HONEYBADGER_PROJECT_ROOT |
| report_data | bool | true | false | HONEYBADGER_REPORT_DATA |
| development_environments | Array(String) | [“development”,“test”] | HONEYBADGER_DEVELOPMENT_ENVIRONMENTS | |
| environment | String? | nil | "production" | HONEYBADGER_ENVIRONMENT |
| merge_log_context | bool | true | false | n/a |
Documentation for context variables can be found in the Configuration class
Environment based config
Section titled “Environment based config”Honeybadger can also be configured from environment variables. Each variable has
a correlated environment variable and is prefixed with HONEYBADGER_. For
example:
env HONEYBADGER_API_KEY=2468 ./serverAll environment variables are documented in the configuration table above.
Version requirements
Section titled “Version requirements”Crystal > 0.36.1