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

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...

makandra dev

Geordi provides a pretty neat way to generate beautiful commit messages according to your stories in Linear: geordi commit

Geordi's cucumber command has a --rerun option that reruns failing tests the given number of times. Usage: geordi cucumber...

Let's say you have a gem which has the following module: module SuperClient def self.foo 'Foo' end

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 general, the tracker should always be the definitive source of truth of what needs to be done as part...

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...

makandra dev

For webpages to load fast it's recommended to optimize images. Ideally an image's file size should be as...

Background information about session storage in Rails Rails has a default mechanism to store the session in the CookieStore. This...

Whenever is a Ruby gem that provides a nicer syntax for writing and deploying cron jobs. Leading zeros are important...

makandra dev

Authentication is a special part of web applications. On the one hand, it usually is a crucial security mechanism restrict...

For outputting a given String in HTML, you mostly want to replace line breaks with or tags.

Don't sum up columns with + in a sql-query if NULL-Values can be present. MySQL and PostgreSQL cannot...

When you have string contents (e.g. a generated binary stream, or data from a remote source) that you want to...

Form fields can be rendered as noneditable by setting the disabled or the readonly attribute. Be aware of the differences...

Sometimes it's necessary for you to check which ports are in use on your local machine and which process...

Understanding your type of cronjob Some cronjobs must only run on a single server. E.g. when you run nightly batch...

TL;DR Use user.update!(remove_avatar: true) to delete attachments outside of forms. This will have the same behavior as...

This is a small example on how you can check if your Postgres index can be used by a specific...

By default, browsers will not wrap text at syllable boundaries. Text is wrapped at word boundaries only. This card explains...