Sometimes you'll find yourself with a set of tasks that require similar code for different models. For example, if...

When you write your next CarrierWave uploader, consider processing your images with libvips instead of ImageMagick. Reasons for libvips

Ctrl + Alt + S > search "rubocop on save" Under "Inspections", check the highlighted box on rubocop -a Caveat: This adds a...

We have a long-standing checklist for merge requests. However, it hardly matches the intricate requirements for design. This checklist...

Splitting up commits makes the process of reviewing often easier, since you can create several merge requests or review every...

It most cases it's not necessary to add a version constraint next to your packages in the package.json. Since...

It most cases it's not necessary to add a version constraint next to your gems in the Gemfile. Since...

Code splitting is a feature of esbuild that can keep huge libraries out of the main bundle. How code splitting...

As we are slowly switching from Cucumber scenarios to RSpec feature specs, you might be tempted to write assertions like...

makandra dev
gist.github.com

Context and further resources Even though you can get 90% of debugging done with up to 5 basic byebug commands...

I recently noticed that better_errors allows you to to open files from within your favorite editor. However it was...

Debugging your integration tests, that run a headless Chrome inside a docker image, is tricky. In many cases you can...

Every Rails response has a default ETag header. In theory this would enable caching for multiple requests to the same...

tl;dr Individual transform properties are great because they allow you to write more readable and maintainable CSS, especially when...

tl;dr asdf allows you to manage multiple runtime versions with a single CLI tool and is backwards compatible by...

blog.mastermind.dev

I found the linked article very helpful to refresh my understanding of database indexes. As a small bonus, it includes...

To navigate between test and test subject Rubymine requires you to set the test root sources as Test Sources Root...

Haml 6 was a major rewrite with performance in mind. To achieve a performance improvement of 1.7x, some design...

By default most exceptions in Rails will render a 500 error page and will create a new issue in your...

This is a checklist I use to work on issues. For this purpose I extracted several cards related to the...

Carrierwave's BaseUploader can have some validations that you can use by overriding a certain method, which's expected name...

geekytidbits.com

To retrieve only unique combinations of the selected attributes: You can omit rows, where all selected columns are equal with...

Rails includes milliseconds in Time / DateTime objects when rendering them as JSON: JSON.parse(User.last.to_json)['created_at'] #=> "2001-01-01...

Let's assume that we have a model Movie that registers a callback function when a new instance of Movie...