Brought to you by Honeybadger—we combine error, uptime, and cron monitoring in one simple and easy-to-use app for developers.
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.
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.
Ever wanted to know which method caused an exception - even if the exception was swallowed before you could get your hands on it? You can do all this and more with the magic of TracePoint.
It's super handy to be able to refer to processes by name. But default process names can be pretty cryptic. This post will show you how to set friendly process names, and even how to use the process name to provide status summaries for long running processes like Unicorn.
The &: trick is a great shortcut when using enumerable methods like map. The way it works may surprise you. In this post we'll look in detail at exactly how code like
users.map(&:name) functions under the hood.
When you use something as much as Ruby developers use Hashes, it's easy to think you've seen it all.
But I'm here to tell you that the humble ruby Hash has a few tricks up its sleeve. Far from being a dumb key-value system, the Hash object gives you...
I needed a script that will fetch our most recent blog posts and output a "digest" HTML email that I can personalize. In this post we walk through the process of creating it. You'll learn about fetching and parsing RSS as well as templating with ERB. Yes! You can use ERB outside of Rails!
An OpenStruct is around 10x slower to initialize than a Struct. That was the surprising result of this benchmark where we pitted structs vs classes vs hashes vs OpenStruct. Hashes didn't do much better.
If you've ever thought of using Ruby to access libraries in C or Java, or to manipulate the operating system then it's critical that you know the basics of bit manipulation. We start out with the basics of binary in Ruby and finish with John Carmack's legendary inverse square root approximation.
Is your Rails app is taking up a lot of RAM? Perhaps your application’s memory footprint is being enlarged by one or more bloated gems. The Derailed gem provides some awesome tools for detecting gem bloat.
Did you know you can use lambdas as a kind of dynamic hash replacement? The truth is, lambdas are pretty cool once you start to investigate them. In this post we'll cover basic usage and then show you some cool lambda tricks.
In a previous post we showed you how the environment variable system works, and busted some common myths. But as one helpful reader pointed out, we didn't say much about security. Since it's become common to use env vars for storing secret API keys and other valuable information, It's important to understand the security implications. Let's take a look.
If you want to be able to effectively manage web apps in development and in production, you have to understand environment variables. This post will show you how environment variables really work - and perhaps more importantly, how they DON'T work. We'll also explore some of the most common ways to manage environment variables in your Rails apps.
By now I think everyone agrees that Pry is the best thing to happen to the Rails console since...well, ever. Built-in to pry are a few really cool features that make it much easier to work with exceptions than it was in plain old IRB. Let's take a look.
In this post we look at Ruby's exception class heirarchy, and how you can use it to be as broad or as narrow as you like when rescuing exceptions.
Exceptions are classes, just like everything else in Ruby. This post will show you how to create your own custom exceptions without falling into some common traps that snare beginners.
tl;dr If you want to run a shell command from Ruby and capture its stdout, stderr and return status, check out the Open3.capture3 method. If you'd like to process stdout and stderr data in a streaming fashion, check out Open3.popen3.
So many bad choices