Logo of AppSignal

Menu

Engineering

Our team handles over 30 billion requests each month. We run a stack with Ruby, MongoDB, Rust, Go, React and are improving this all the time.

JavaScript-sprinkled Rails Applications

By Jeff Kreeftmeijer on

Using JavaScript sprinkes to load dynamic or user-specific content after the rest of the page is directly served from the cache.

read more

Under the Hood: “Slurping” and Streaming Files in Ruby

By Jeff Kreeftmeijer on

Streaming files line by line is often preferred over “slurping” the whole content at once. In this edition of Ruby Magic, we'll learn how streaming files and other I/O streams works in Ruby.

read more

Custom Exceptions in Ruby

By Robert Beekman on

Almost everything in Ruby is an object and errors are no exception.

read more

Caching counters with ActiveRecord's counter caches

By Jeff Kreeftmeijer on

Instead of counting the associated records in the database every time the page loads, ActiveRecord’s counter caching feature allows storing the counter and updating it every time an associated object is created or removed.

read more

Deconstructing Elixir's GenServers

By Jeff Kreeftmeijer on

Elixir uses GenServers to keep state and run code asynchronously. But how does this work? In this episode of Elixir Alchemy, we'll deconstruct Elixir's GenServer module to see how it works under the hood.

read more

Ruby's redo, retry and next keywords

By Thijs Cadier on

We've talked about the retry keyword before. Its little-known counterpart redo works similarly, but reruns loop iterations instead of whole blocks.

read more

Ruby's magical Enumerable module

By Jeff Kreeftmeijer on

Ruby's handling of enumerables is one of it's most magical features. In this episode of Ruby Magic, we'll learn how these work and how to make your own objects tenumerable.

read more

Speeding up your app’s navigation with Turbolinks

By Jeff Kreeftmeijer on

Turbolinks is an optimization that increases the perceived performance by being smart about switching pages and reloading assets in your app.

read more

Ensuring execution, retrying failures and reraising exceptions in Ruby

By Jeff Kreeftmeijer on

Besides `rescue`, Ruby has more ways to handle exceptions. We'll use the `retry` and `ensure` keywords and reraised exceptions to build a resilient web API client.

read more

Client-side caching in Rails:
conditional GET requests

By Jeff Kreeftmeijer on

Rails' conditional GET support allows you to store rendered pages in the user's browser cache to reuse them for repeated requests instead of rendering the same view multiple times.

read more

ActiveRecord performance:
the N+1 queries antipattern

By Jeff Kreeftmeijer on

The N+1 queries problem is a common, but usually easy to spot, performance antipattern that's sometimes caused by lazy loading associations.

read more

Post-mortem: April 19th, 2018

By Robert Beekman on

For the first time in years we lost customer data, here's how it happened.

read more

More articles

Go back

Subscribe to

Ruby Magic

Magicians never share their secrets. But we do. Sign up for our Ruby Magic email series and receive deep insights about garbage collection, memory allocation, concurrency and much more.

We'd like to set cookies, read why.