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.