Heads up: RSpec's diffs may not tell the truth
RSpec diffs can mislead when matchers print like failures or when Time.now values differ only by milliseconds.
Spreewald, Cucumber: Selector for the nth Element
Custom Cucumber selectors in Spreewald make it easy to target repeated form fields by ordinal position, but :nth-of-type can break when surrounding HTML changes.
How to make sure that manual deploy tasks (scheduled in Pivotal Tracker) are executed on deploy (with Capistrano)
Manual deploy work around releases can be missed easily; tracking pre- and post-deploy tasks in Pivotal Tracker and wiring them into Capistrano adds a safety net.
JavaScript: Don't throw synchronous exceptions from functions that return a Promise
Promise-returning functions are hard to use when they sometimes throw synchronously; returning a rejected promise keeps failure handling consistent.
XHR is not JSON
request.xhr? is not a reliable signal for JSON responses in Rails; respond_to respects the client’s Accept header and supports both HTML and JSON.
RSpec: Efficiently rerunning failed examples during development
Persisting RSpec example status lets failed tests be rerun quickly during development with --only-failures or --next-failure.
Using Ruby's Method objects for inspecting methods
Ruby Method objects make it easier to inspect a method’s owner, signature, source, and definition site during debugging, especially when behavior changes across loaded code.
Use rbenv-each to run a command for every installed Ruby version
rbenv-each runs a command across every installed Ruby version, useful for updating global gems like bundler, rubygems, or other tools outside a Gemfile.
What collapsing margins are, how they work and when margins do not collapse
Adjacent vertical margins in CSS combine by taking the larger value, not the sum, which can create unexpected spacing or prevent consistent component layouts.
Be careful to use correct HTTP status codes for maintenance pages
Wrong status codes on maintenance pages can deindex sites or cache bad redirects. 503 Service Unavailable with Retry-After preserves SEO during temporary downtime.
Ag: Very fast grep replacement
ag is a fast text-search tool for source trees, honoring .gitignore and optional .ignore files for fewer matches and better performance.
Devise: How to send asynchronous emails
Devise mail is sent synchronously by default; deliver_later can log sensitive password reset tokens through ActiveJob. A custom mail delivery job disables argument logging.
Tasks, microtasks, queues and schedules - JakeArchibald.com
JavaScript timeout and promise callbacks can run out of queue order because tasks and microtasks follow different scheduling rules.
Restarting all God tasks
Restarting every process watched by God requires a full stop, terminate, and start cycle; god restart only performs a soft restart for one process or group.
Rails: Talking to the database without instantiating ActiveRecord objects
Direct SQL access can avoid the overhead of instantiating ActiveRecord objects, but skips validations, callbacks, and custom accessors.
How to work around selenium chrome missing clicks to elements which are just barely visible
Chrome/Selenium can miss clicks on barely visible elements when the click target is outside the viewport. A scrollIntoViewIfNeeded patch can work around the issue.
HTML: Auto fill-in OTP received in text message (SMS)
Browsers can autofill SMS one-time codes when inputs use autocomplete="one-time-code"; support is good in Chrome 93+ but absent in Firefox.
Upgrade Rails: Awareness list
Awareness list for Rails upgrades with version-specific pitfalls and workflow references, including production logging changes in Rails 7 and 6.
Don't use log level :debug in your production environments
log_level :debug can expose sensitive user data in Rails production logs, especially in SQL queries. Use :info, avoid SQL logging, and ensure filtered attributes are applied.
Advanced plotting in Ruby with Gnuplot
Complex plots in Ruby often need direct access to Gnuplot syntax for histograms, boxplots, and multi-column data. Ruby wrappers differ in how much file handling and array support they hide.
Split your parallel tests by execution time and keep execution logs up to date
Historic timing data keeps test distribution balanced, but stale logs and CI-only updates can skew results and clutter diffs. Automating runtime log generation reduces maintenance.
Lightning Talk: Coverage based Test Case Prioritization in Ruby on Rails
CLI test case prioritization for Ruby on Rails using coverage data can surface failing specs earlier and reduce regression testing time.
What Ruby’s ||= (Double Pipe / Or Equals) Really Does
||= and &&= only assign conditionally; other op= operators always evaluate and assign. Side effects on the left-hand side still occur when reading the variable.
Geordi: How to rerun failed features
Rerun failing Cucumber scenarios automatically or from tmp/parallel_cucumber_failures.log when a test run leaves broken features behind.