Tutorials, product info, and good advice from the Honeybadger crew.
If you've ever taken a look at Ruby's exception hierarchy, you may have noticed something weird. In addition to all of the normal exceptions like RuntimeError and NoMethodError, there's an odd reference to Errno::* . This post discusses what these exceptions are and how to interpret them.
Unix daemons are programs that run in the background. Nginx, Postgres and OpenSSH are a few examples. They use a some special tricks to “detatch” their processes, and let them run independently of any terminal. I thought it’d be fun to do a post illustrating how they work in Ruby.
With hard-to-reproduce bugs, it can be really handy to log all of the local and instance variables along with the exception. This post shows you how. Along the way we'll introduce Ruby's binding system as well as the bindingofcaller gem - a powerful tool for introspection.
Nothing could be simpler and more boring than the case statement. It’s a holdover from C. You use it to replace a bunch of ifs. Case closed. Or is it? Actually, case statements in Ruby are a lot richer and more complex than you might imagine. Let’s take a look.
Byebug is a simple to use, feature rich debugger for Ruby 2.x. In this post, we'll discuss how to set up remote debugging with byebug so that you can debug code running in Pow, Unicorn or other application servers.
In this post we start out with the basics of unix sockets and finish by creating our own simple Ruby application server which can be proxied by nginx.
When you use a rescue clause in Ruby, you can specify what kinds of exceptions you want to rescue. But what if you want to rescue exceptions by severity? By message? By time of day? In this post we'll discuss how you can create dynamic exception matchers that use your logic to decide if an exception gets rescued.
It's a common pattern in Ruby to rescue and exception and re-raise another kind of exception. But the original exception isn't lost! You can use Exception#cause to grab it. In this post we show you how.
If you're a Go developer, we have some great news: you can now monitor your Go applications for panics and errors with Honeybadger! We've been working hard to create the same great error monitoring experience that our Ruby customers enjoy for the Go community, and we hope you'll love the results.
Ruby provides a few interesting mechanisms that make it easy to "try again" - though not all of them are obvious or well-known. In this post we'll take a look at these mechanisms and how they work.
Join our community of kick-ass developers as we learn engineering, DevOps, and cloud architecture.
We'll never spam you; we will send you cool stuff like exclusive content, memes, and swag.
"This was the easiest signup experience I've ever had. Amazing work." — Andrew McGrath