Introducing Breadcrumbs

We added a useful debugging tool called Breadcrumbs. Check them out, and perhaps you will never need a random debug log in production ever again.

How We Migrated To Turbolinks Without Breaking Javascript

In this article, I'm going to tell you about our migration from PJAX to Turbolinks. The good news is that Turbolinks works surprisingly well out-of-the-box. The only tricky thing about it is making it work with your JavaScript. By the end of this article I hope you'll have a good idea of how to do that.

The honeybadger gem 4.0 has been released!

Last week we released version 4.0.0 of the `honeybadger` Ruby gem. This release includes a long-awaited feature which makes it even easier to customize your error reports before they are sent to Honeybadger. We also did some much-needed refactoring, and made a few removals and deprecations for good measure. Don't worry, though—most of the API remains unchanged, so upgrading should be a relatively painless process for most users.

The Case of the Flaky Test Suite

In this story, Jason Swett of The Ruby Testing Podcast discusses the pitfalls of external dependencies in your test suites, and how to avoid them.

Adding Context to Exception Classes

We recently shipped version 3.2 of the honeybadger Ruby Gem, which includes a new feature to make it easier to add context to your error reports.

JQuery-Free Rails and Legacy Browsers

Rails 5.1 will no longer depend on JQuery. I ran the UJS test suite on several versions of IE to see how nicely the new system plays with legacy browsers.

How to Manage Application Secrets in EC2

Are you deploying your apps to EC2 and wondering how to store your application secrets? Learn how to use KMS and IAM roles to store your secrets on S3 securely.

How HTTP headers get passed from nginx to your Ruby app

Whether you use rails, Sinatra, or Lotus, you don't really have to think about how cookies and other headers pass from nginx or apache, to the application server and into your app. We're going to examine this journey in a little more depth. Because it turns out that the story of headers contains a lot of interesting information about the history of the web.

Ditching your single page app for...turbolinks?

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.

How to add context data to exceptions in Ruby

Sometimes the standard backtrace / error message combo isn't enough. Sometimes you need extra data to locate the cause of an error. In this post we'll discuss three easy ways to add more context to your exceptions.

Remote Debugging with Byebug, Rails and Pow

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.

Using Temporary Tables in PostgreSQL with Rails

Here at Honeybadger, we have a lot of data, which presents us with a few problems. One of the biggest challenges is data culling. Removing old data that nobody uses any more, while keeping the good stuff.

Complicating matters is the fact that our...

How we implemented in-browser alerts with Pusher, Rails and Pnotify

Today we're announcing the launch of a fun feature: In-browser notifications. Once enabled on the Notifications tab of the Project Settings page, you'll get a popup notification in the corner of the browser window when one of the events occurs that...

A better method of handling multistep forms in rails

If there ever was a task that seemed straightforward from the outside, but then turned out to be really complicated when you got into it, a multi-step form is it.

Why are multi-step forms so hard? The main challenge seems to be validating partial...

Testing controllers in Rails 4 engines

Testing controllers in Rails engines with RSpec requires you to jump through some hoops. If memory serves, it was slightly trickier in Rails 3 than it is now in Rails 4. Fortunately the fix is pretty easy, if not obvious.

By the way, I'm standing...

The data mapper pattern in Rails 4 using the perpetuity gem

Data Mapper

In this post I'll describe how to get started using the Data Mapper pattern in Rails 4. But first, I'd like to explain what the Data Mapper pattern is, why you might want to use it, and the history of the Data Mapper + Rails combo.

What Data Mapper...

What everybody ought to know about Ruby on Rails 4.1

One of the most important things to know about Rails 4.1 is that even the beta version is stable enough for some companies to use it in production. For example,Basecamp began Rails 4.1 beta1. Other important features from the release notes include...

Speed up Rails tests 10x by using PORO domain models

If you're like most Rails developers I know (including myself), you're probably used to writing "unit" tests in RSpec that load up the whole Rails framework before each test, which takes a few seconds to do, even if you're only testing one tiny thing...

Getting Started with AngularJS and Rails 4

Getting started with AngularJS isn't hard. The documentation is some of the best out there and it's tutorials are simple enough.

But things get tricky when you start combining technologies.

If you're using CoffeeScript instead of straight JavaScript...

Zero downtime migrations: 500 million rows

Data makes things hard

In this article I'm going to go over some of the tricks we use to handle large data migrations at Honeybadger. Check out the video for a quick overview.


When you have a lot of data, your life gets harder. When you only have...