Today I stumbled across a pretty harmless-looking query in our application which turned out to be pretty harmful and...

makandra dev

All browsers implement an event named beforeunload. It is fired when the active window is closed and can be used...

I recently noticed a new kind of flaky tests on the slow free tier GitHub Action runners: Integration tests were...

Sometimes you have a file that is related to a project, while not actually being part of it. You'd...

tl;dr We recommend configuring Selenium's unhandled prompt behavior to "ignore". When running tests in a real browser, we...

A Rails script lives in lib/scripts and is run with bin/rails runner lib/scripts/.... They are a simple tool to perform...

github.com

There are a few tools to combat the dreaded n+1 queries. The bullet gem notifies you of missing eager...

developer.mozilla.org

Today I learned that you can animate HTML elements using the Web Animation API's method .animate(keyframes, options) (which...

Here are some hints on best practices to maintain your tasks in larger projects. Rake Tasks vs. Scripts

unpoly.com

Version 3.7.0 broke some things in complex forms. Sorry for that. Concurrent user input is hard. 3.7.1 This change fixes...

makandra dev

I recently did a quick research on how to better write down multiline statements like this: # Dockerfile RUN export DEBIAN...

makandra dev
alan.norbauer.com

A list of clever debugging tricks. TOC: Advanced Conditional Breakpoints monitor() class Calls Call and Debug a Function Pause Execution...

jetbrains.com

RubyMine has a collaboration feature called "Code With Me". Using it, you can invite someone into your local editor to...

edgeapi.rubyonrails.org

The linked article suggests an interesting way to speed up tests of Rails + Postgres apps: PostgreSQL allows the creation of...

This Capistrano task runs a command on all servers. bundle exec cap production app:run cmd='zgrep -P "..." RAILS_ROOT/log/production.log...

You can use pg_repack to do a VACUUM FULL without holding an exclusive lock during processing. There is still...

makandracards.com

A general overview about why and how we migrate can be found under Migrating from Elasticsearch to Opensearch

OpenAI is currently limiting the Audio generating API endpoint to text bodies with a maximum of 4096 characters.

In Capistrano 3, your Capfile requires 'capistrano/rails/migrations', which brings two Capistrano tasks: deploy:migrate and deploy:migrating. The former checks...

#pluck is commonly used as a performant way to retain single database values from an ActiveRecord::Relation Book.pluck(:title, :price...

makandra dev

Getting CSS (and JS) live reloading to work in a esbuild / Rails project is a bit of a hassle, but...

If you ever need to restore exact records from one database to another, Marshal might come in handy. Marshal.dump is...

Apply Test Driven Development(TDD) to the process of building container images by defining test before writing code and automate...

Creating Nagios Config with puppet Let's have a look at the classic way of managing Nagios configuration with exported...