Tutorials, product info and good advice from the Honeybadger crew.
Rails apps tend to start simple, with clean models and controllers. Then you start adding features. Before you know it, your models and controllers are big, unwieldy, and hard to understand. Refactoring into service objects is a great way to split these big pieces up, so they're easier to understand, test, and maintain.
Rbenv, RubyGems, and Bundler work together to give us a lot of control over our code's environment. If you know how they work, you'll be better prepared to troubleshoot any problems you encounter. In this article, Olasubomi walks us through the basics of how these three tools do what they do.
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.
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.
Have you ever thought about trying typescript for your app's front end? It's enticing, but the thought of porting all that existing JS is just too much. But what if you could gradually introduce typescript into your existing app, only using it where it made sense? In this article, Ayo Isaiah shows us how to do just that.
In earlier installments of this series, Alex Stoll guided us through creating a lexer and a parser. These translated the human-readable source code into data structures. In this article, he begins work on the interpreter - the bit that actually runs our code!
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.
One of the easiest ways to speed up your web app is to cache slow-to-compute data, so it doesn't have to be recomputed the next time the page loads. In this article, Keneth Ekandem shows us how to use Redis to cache DB results in a Laravel App.
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.
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.