When upgrading Rails versions -- especially major versions -- you will run into a lot of unique issues, depending on the exact...

When projects run for many years, they require special regular maintenance to stay fresh. This kind of maintenance is usually...

relishapp.com

When you are using lambdas in RSpec to assert certain changes of a call, you know this syntax: expect { playlist.destroy...

Geordi uses parallel_tests if available for running the test suite. To debug an application it is very unhandy to...

When debugging your application, you will come across objects created by some gem or framework. You don't have the...

S3cmd is a free command line tool and client for uploading, retrieving and managing data in Amazon S3. S3cmd reads...

There seems to be no built-in matcher in RSpec to check if a string contains terms in the desired...

github.com

Masonry is a famous library to dynamically arrange a grid of items that have different aspect ratio, like horizontal and...

github.com

For Sidekiq to be able to retry your jobs it has to be able to catch errors that occur while...

makandra dev

Cross-Site Request Forgery (CSRF) is an attack pattern for websites. A CSRF attack is usually relevant in a...

A JavaScript error in an E2E test with Selenium will not cause your test to fail. This may cause you...

If validations failed for a record, and you want to find out if a specific validation failed, you can leverage...

keepachangelog.com

We want to keep a changelog for all gems we maintain. There are some good practices for writing a changelog...

Most forms have a single submit button that will save the record when pressed. Sometimes a form needs additional submit...

Migrating data from a legacy into a new system can be a surprisingly large undertaking. We have done this a...

In a project team for a bigger project people have several roles: Developer: at makandra Project lead: at makandra

At makandra, we've built a few gems over the years. Some of these are quite popular: spreewald (> 1M downloads...

When you receive a ZIP file from a Windows user, umlauts and other non-latin1 characters in filenames may look...

Having a unique selector for an element is useful to later select it from JavaScript or to update a fragment...

makandra dev

Option 1: JSON dump In config/webpack/environment.js you can get inspect environment which includes all webpack config options set for the...

Why secure-only cookies used to be necessary Cookies have an optional secure flag. It tells the browser to not...

benmccormick.org

The linked article lists a number of techniques that were best practices with ES5, but have better alternatives in modern...

makandra dev
litmus.com

The 90s are calling: they want their tables back. Unfortunately, you need them all for laying out your HTML emails...

When you need to store structured data (like Ruby hashes) in a single database column with ActiveRecord, a simple way...