In the past we validate and set default values for boolean attributes in Rails and not the database itself.

Not all email clients support external images in all situations, e.g. an image within a link. In some cases, a...

Since Rails 7 you are able to encrypt database information with Active Record. Using Active Record Encryption will store an...

In Rails 5+ you can access a helper from a controller using the helpers method: # Inside a controller action

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

vertical-align is hard. Have you ever wanted to vertically center an icon with text? This usually means "vertically align...

Sometimes, the rails dev server doesn't terminate properly. This can for example happen when the dev server runs in...

When you use the :as option to map a power to a controller method you can now override the generated...

thepugautomatic.com

How a macro can dynamically define a method that can be overridden with super in the same class.

After upgrading to Rails 6.1.7.2 one of our apps printed a wall of warnings while booting: /var/www/app/shared/bundle/ruby/2.6.0/gems/net-protocol-0.2.1/lib/net/protocol.rb:68: warning: already...

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

I recently enjoyed debugging a Cucumber step that tried to be retryable using a patiently block: Then /^"([^"]*)" should( not)? be...

kukicola.io

Using ActiveRecord's #signed_id and .find_signed methods you can create URLs that expire after some time. No conditionals...

When an object is created / updated, various callbacks are executed in this order: before_validation after_validation before_save

bundler.io

Bundler so far ignored the version specified under BUNDLED_WITH in the Gemfile.lock. This had two annoying consequences:

makandra dev

Timecop is a great gem to set the current time in tests. However, it is easy to introduce flakyness to...

Usually, design development starts with drafts, sketches and prototypes. These are reviewed, refined and iterated until the final design is...

To read the current breakpoint tier in JavaScript, employ this CSS: :root { --current-breakpoint-tier: xs; @media (min-width: $screen...

makandra dev

In a Jasmine spec you want to spy on a function that is imported by the code under test. This...

github.com

Instead of cobbling together default settings in several different places as the issues arise, you can define them application-wide...

We usually rely on VCR and WebMock to prevent any real network connection when running our unit tests.

By default subscript ( ) and superscript ( ) tags are styled with vertical-align: sub, respectively vertical-align: super by most browsers.

Usually, Unpoly compiler destructors are returned from the compiler function. However, when using async compiler functions, you can not register...