Ruby articles

Brought to you by Honeybadger—simple application monitoring that helps developers move fast and fix things.

Set Up A Docker Container To Test Your Rails App

Code is never self-contained. It runs in an environment. Docker lets you define that environment in a simple and portable way. That's why pretty much every automated testing and deployment service works with docker containers. You give them a container, and done! But how do you set up a container to use for testing your Rails app? In this article, we'll show you.

Rails Security Threats: Authentication

Authentication is at the heart of most web development, yet it is difficult to get right. In this article, Diogo Souza discusses common security problems with authentication systems and how you can resolve them. Even if you never build an authentication system from scratch (you shouldn't), understanding these security concerns will help you make sure whatever authentication system you use is doing its job.

Understanding RBS, Ruby's new Type Annotation System

Ruby's flexibility has always been both its greatest strength and its greatest weakness. You can write amazingly expressive programs. You can also slip and break them in amazingly expressive ways. RBS is a new type annotation system in Ruby 3 that seeks to keep ruby's flexibility while protecting us from some of its dangers. In this article, Julio Sampaio walks us through RBS. He explains the impact it has on metaprogramming, and he shows us how we can use it to make our own apps more robust.

Understanding Ruby Method Lookup

Ruby lets you express yourself like few other languages, with a minimum of boilerplate. It's fantastic until it isn't. Until one day when you think you're calling the foo method you wrote last week, but instead, you end up calling a foo method that came with some gem from 2008. In these situations, knowing about Ruby's method lookup rules will save your bacon.

Rails Security Threats: Injections

One of the best things about Rails is that it protects your app from a wide variety of injection attacks with minimal development effort. But we're never 100% safe. After all, Rails can't protect us from our own bad decisions. We need to understand the threats so we know when we can lean on Rails and when we can't. In this article, Diogo Souza introduces us to the OWASP Top 10 list of vulnerabilities and dives into injection vulnerabilities to show us how rails protects us against them and how we can protect ourselves.

React on Rails: Building a Simple App

To decide on a front-end for your Rails app, you need a feel for the options. Does a certain JS framework speak to you or does it make you feel dirty inside? There's only one way to find out! In this article, Julio Sampaio walks us through creating a React app from scratch and integrating it with a Rails back-end via webpacker.

Using Angular with Rails 5

Before you can decide on a front-end for your Rails app, you need a feel for the options. Does a particular JS framework speak to you or does it make you feel dirty inside? There's only one way to find out! In this article, Julio Sampaio walks us through creating an Angular app from scratch and integrating it with a Rails back-end via webpacker.

HTTP Caching in Ruby on Rails Applications

The fastest web page is one you've already loaded. Browsers love to avoid round-trips by caching assets. And HTTP provides ways for us to tell browsers what's changed and what hasn't - so they make the right decisions. In this article, Jonathan Miles introduces us to HTTP caching and shows us how to implement it in Rails.

Which is fastest? ERB vs. HAML vs. Slim

A fast app means happy users. The speed that your pages render depends on which templating system you use. In this article, Diogo Souza puts the three most popular Ruby templating engines to the test to see which is fastest. In the process, he shows us how to construct benchmarks and do our own investigations into performance.

SOLID Design Principles in Ruby

As developers, we spend way more time maintaining and changing code than we do writing it. By optimizing for change through SOLID design principles, we can avoid a lot of pain. In this article, Milap Neupane introduces us to SOLID, explains each principle in-depth, and shows us how to apply them in Ruby.

Logging in Ruby with Logger and Lograge

Logging is tricky. You want logs to include enough detail to be useful, but not so much that you're drowning in noise - or violating regulations like GDPR. In this article, Diogo Souza introduces us to Ruby's logging system and the LogRage gem. He shows us how to create custom logs, output the logs in formats like JSON, and reduce the verbosity of default Rails logs.

Code Loaders in Ruby: Understanding Zeitwerk

What makes Rails magical? It just might be its code loader. Put a few files in the right places, and - presto! - you have a web app. When you use a class, Rails handles the include so you can stay focused on your code. But this magic isn't just for Rails! You can add thread-safe code loading to your own apps via the Zeitwerk gem. In this article, Olasubomi introduces us to Zeitwerk and shows us how to integrate it with our own projects.

ActiveRecord For Databases Without Unique Ids

We don't get to choose our families. Some of us don't even get to choose our databases. What do you do if you have the bad luck to inherit a database with non-unique ids? In this case study, Regan Ryan shows us how his team faced the challenge.

Exploring Merge Sort with Ruby

You'll probably never implement sorting from scratch. But sorting algorithms are foundational in computer science and have become a standard feature of the ritual hazing...er...interview process for developers at all levels. In this article, Julie Kent introduces us to the merge sort algorithm. She'll show us how it works, implement it in ruby, and discuss its performance characteristics.