Cache-Control directives are pretty straightforward to understand. They're
easy to use as well if you assume that all the caches between your end user
and application correctly implement the spec. Unfortunately, as with any spec,
you can't make that assumption.
Ever get a feeling of dread while working on a long problem? That feeling is cancerous towards your work, your relationships at work and your well being. I've personally experienced it many times during my short career -- it's not a fun experience and that's why I would like to write about it. Work doesn't have be like that. You can stop the cycle and feel way better about yourself!
When building a custom background processing system, at one point, you need to worry about how you spin up and manage multiple worker processes. This is where most people reinvent the the wheel, and write custom code. Don't reinvent the wheel, and use Einhorn instead.
Out of the box, there are 3 ways to create classes in Ruby. Find out how to use all 3 options, and learn when to use one option over another.
This article argues that when able to one should break down iteration operations over an array into map and select as opposed to operating on the enumerable through an each.
Having a limited number of consumers for an API lets you keep the authentication really simple for that API. Let's explore HTTP Basic Authentication and HTTP Token Authentication as the simple solutions in this scenario.
Ruby provides two different syntaxes to nest modules (and classes). Most Rubyists think that the syntaxes are interchangeable. But, the the code may behave differently depending on the choice of syntax.
Find out how RABL, ActiveModel Serializers, and plain Ruby presenters perform relative to each other when they are used to generate JSON.
The S3 and CloudFront logs for us are easily terabytes of data per year, and traditional log parsers tend to not handle that size of data. Find out how we use AWS RedShift for log analysis.
You can configure Airbrake to notify you of errors that happen in your rake tasks. However, there is a gotcha if you want to do this outside of Rails.