If you've never used Ruby's refinements, you might be surprised to learn that they're lexically scoped. We'll discuss what this means, and the implications for your code.
In this post, we'll discuss how to separate an HTML document into logical sections based on heading tags. I'll all also show you a cool trick for rendering arbitrarily-deep subnavigation trees using Liquid templates.
Longer pages often benefit from subnavigation. In this post, we'll make a Jekyll plugin to dynamically generate subnavigation from H2 tags.
When your service fails due to an exception in your application code (Ruby, Go, Elixir, etc...), Honeybadger alerts you. Unfortunately, application errors are only half the story. What happens when something goes wrong outside of your application code? You probably use something like our Uptime Monitoring to be alerted of catastrophic outages such as when EC2 is down, DNS fails, or one of the other myriad scenarios play out.
We are very proud to announce that Honeybadger now officially supports reporting exceptions and errors -- with advanced features such as nested exceptions and request data! -- from Java web applications.
Over the past few months we've been working on delivering an improved search experience for Honeybadger customers, and today we're happy to announce that it's finally ready. Our goal was to provide more advanced search options for the data you've been sending us while keeping simple searches simple, and I think we've accomplished that. We'll still support the simple "just enter some text to do a quick wildcard search", but now we'll also support more specific searches, like the following:
You tried turbolinks, once, and soon your app began to fail in strange and wonderful ways. But some people make it work. What's their secret? The answer is so simple, it just might amaze you.
When you treat your collections as enumerators, you get to use all your favorite functions like #map and #reduce without having to write any extra code. In this post I show you how easy it is to create enumerators on the fly, without defining extra classes or messing around with the Enumerable module.
These days it's pretty common to see #freeze used in Ruby code. But it's often not entirely clear WHY freeze is being used. In this post we'll look at the most common reasons a developer might freeze variables.
If you want your app to behave well in a unix environment, it's important that it exit correctly. In this post you'll learn all about unix exit codes, the mechanism that Ruby uses to exit a program, and how you can add custom behavior on exit.
Good news Elixir fans! Honeybadger now supports exception monitoring for Elixir. Let's take a look and see how easy it is to get started.
But buried within Ruby's nesting implementation - and Rails' autoload system - are a few traps that can cause your code to fail in strange and wonderful ways. In this post, we'll discuss the origin of these traps and how you can avoid them.
It's often useful to be able to get the most recent exception, even if your code doesn't control the lifecycle of that exception. In this post we explore a few of the ways to do this.
For over a year now you've been able to route your error notifications to PagerDuty. Now you can send outage notifications as well.
Did you know that Ruby provides a way for your script to use its own source file as a source of data? It's a neat trick that can save you some time when writing one-off scripts and proofs of concept. Let's check it out!
Have you ever had a bunch of data in an array, but needed to do a key/value lookup like you would with a hash? Fortunately, Ruby provides a mechanism for treating arrays as key-value structures. Let's check it out!
The only thing worse than getting paged in the middle of the night is to also wake up your partner. In this post I show you how you can set up a fitness tracker wristband to silently wake you up the next time you get paged.
Files are just large collections of lines or characters. Lazy enumerators make it possible to to some very interesting and powerful things with them.
Just how much slower are exceptions than other flow control mechanisms? In this post we use a simple benchmark to find out.
Ruby 2.1 and later support nested exceptions via the Exception#cause method. Now you can view these for any error reported to Honeybadger. This post gives a brief introduction to exception causes in Ruby, and shows you what they look like in the Honeybadger UI.