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

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

rspec.info

RSpec let's you chain a matcher with .or. The expectation will then pass if at least one matcher matches...

caniuse.com

There is a kinda secret, yet well supported CSS feature called currentColor. It's like a special CSS variable that...

content.pivotal.io

A matcher is a function that returns an object with a compare key. Usually it is registered with beforeEach...

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

Sometimes, the IRB prints a warning during boot: irb: warn: can't alias source from irb_source. Explanation

rubydoc.info

CarrierWave comes with some RSpec matchers which will make testing more comfortable. Let's say you have an Uploader like...

github.com

Recent Bundler (1.16.1) started complaining about missing dependencies in the Gemfile. This is due to a stricter handling of specifications...

For applications coming with lots of stylesheets and scripts, asset compilation might take quite long. This can be annoying when...

If the argument list is the same every time: expect(object).to receive(:foo).with('argument').and_return('response 1...

When you find yourself constantly ignoring a RubyMine warning, you can simple disable that warning and de-clutter your editor...