Don't assert exceptions in feature specs

Capybara feature specs do not reliably catch server exceptions in another thread; request specs or visible UI assertions fit this user-level behavior better.

How to pretty print all values in a Redis database

Print every Redis key and value to the console for debugging, handling strings, hashes, lists, sets, and sorted sets with a Ruby script.

Better HTML forms: use type, inputmode, enterkeyhint and autocomplete

HTML form usability improves with type, inputmode, enterkeyhint, and autocomplete, giving better mobile keyboards, clearer enter actions, and smarter browser autofill.

Byebug cheatsheet

Quick reference for byebug debugging commands, breakpoints, stack navigation, variable inspection, and thread control.

Bundler in deploy mode shares gems between patch-level Ruby versions

Patch-level Ruby updates can break native gems when Bundler shares bundles across 2.6.x versions, leaving failed deploys with incompatible extensions.

Ruby: Referencing global variables with the built-in English library

Ruby’s special global variables are harder to read and can fail without require 'English', especially in Rails where the library is not loaded by default.

How to write modular code

Reduce spaghetti code by splitting behavior into focused functions, service classes, form models, and value objects, while avoiding long parameter lists and excessive DRY.

How to open files from better_errors with RubyMine on Linux

RubyMine rubymine:// links can fail on GNOME/Linux, blocking better_errors from opening source files in the editor. A custom desktop handler and BETTER_ERRORS_EDITOR_URL make file jumping work.

Chromedriver: Connect local chromedriver with docker

Remote Chrome debugging in Docker is awkward when integration tests need a browser you can inspect. SSH port forwarding can expose a local chromedriver inside the test container.

What is a reduction and why Fibers are the answer for Ruby concurrency | julik live

Ruby concurrency relies on different primitives, and Ruby 3 changes make Fibers a stronger fit for lightweight parallel control flow.

Guide to localizing a Rails application

Rails app localization affects text, URLs, formats, images, caching, and time zones; estimating effort means checking each layer for language-sensitive behavior.

Case sensitivity in PostgreSQL

PostgreSQL compares strings case-sensitively, which can break email and username lookups and uniqueness checks. Lowercasing values or using case-insensitive matching avoids common bugs.

How to Make Your Code Reviewer Fall in Love with You

Better code review habits help reviewers focus on meaningful feedback, reduce friction, and speed your own learning while making future reviews easier.

PostgreSQL: How to use with_advisory_lock to prevent race conditions

Prevent concurrent processes from running the same code at once with PostgreSQL advisory locks. Useful when no row exists to lock and a timeout or failure response is needed.

Allow capybara to click on labels instead of inputs for checkboxes

Custom-styled checkboxes with hidden inputs can’t be toggled by Capybara’s check and uncheck; allow_label_click: true lets tests click the label instead.

Fast rubocop autocorrection alias

rubocop autocorrection can be slow on large codebases because it scans sequentially; a parallel precheck narrows the files before running -a.

The numericality validator does not care about your BigDecimal precision

validates_numericality_of converts values to Float or integer, so high-precision BigDecimals can round and fail comparisons unexpectedly.

What edge_rider offers you

ActiveRecord relation helpers reduce object instantiation, simplify association traversal and preloading, and bridge Rails version differences with a unified API.

Git: Advisory for cherry-picks to production branches

Cherry-picking individual commits to a production branch can create later merge pain because Git treats the same change as different history. Merge production back into main after each cherry-pick.

Be careful when using buttons without a "type" attribute

Buttons without a type attribute default to form submit behavior, so pressing Enter can trigger the wrong action. Set type="button" for non-submitting buttons.

We have deprecated Rack::SteadyETag

Rack::SteadyETag generated stable ETags for responses that only changed in CSRF tokens or CSP nonces. Rails apps should be configured to return identical HTML for the same resource and user.

Rails: Fixing ETags that never match

Rails default ETags often never repeat because rotating CSRF tokens and CSP nonces change response bytes, blocking cache hits and 304 responses.

Operators "in" and "of" are very inconsistent between CoffeeScript and JavaScript

in and of mean different things in CoffeeScript and JavaScript, making property checks and iteration easy to mix up.

Popular mistakes when using nested forms

Common Rails nested form pitfalls include missing accepts_nested_attributes_for, wrong form helper scope, and lost parameters that prevent child records from saving.