Geordi 6.0.0 released

Geordi 6.0.0 keeps geordi commit running when some projects are inaccessible and drops VNC browser support and @solo serial execution.

Simple database lock for MySQL

MySQL can coordinate multiple Rails processes with a database-backed mutex when code must not run concurrently. It is for model-level synchronization, not record locking.

Cucumber: Clear localStorage after each scenario

Client-side storage can persist between Cucumber scenarios even when cookies are cleared, causing test leakage in Selenium-driven browser runs.

Geordi 1.3 released

Geordi 1.3 adds Cucumber support with @solo handling, Capistrano 2/3 deployment fixes, and updated Firefox setup for selenium testing.

How to: Upgrade CarrierWave to 3.x

CarrierWave 3.x changes upload allowlists, inactive versions, version recreation, and processing paths, breaking older uploader logic and custom transcoders.

Imperative vs Declarative Scenarios in User Stories

Imperative and declarative user-story scenarios suit different situations; declarative phrasing offers advantages in RSpec Story Runner and Cucumber testing.

Run a POP3 server on a directory of mail files with popthis

Serve a directory of generated mail files as a local POP3 mailbox for testing clients and inaction_mailer output.

Bash script to list git commits by Linear ID

Bash helper for finding git commits by Linear issue ID, including IDs extracted from Linear URLs, and passing options through to git show.

Spreewald: Content-Disposition not set when testing a download's filename

Public file downloads may miss Content-Disposition, so filename checks fail in Spreewald. Matching only Content-Type or testing the downloaded file avoids flaky download assertions.

OpenAI TTS: How to generate audio samples with more than 4096 characters

OpenAI TTS requests are capped at 4096 characters, so longer text needs chunking and MP3 merging to generate complete audio.

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.

Debug Ruby code

Interactive Ruby debugging lets you pause execution, inspect variables and stack frames, and step through code from a shell or RubyMine.

RSpec matcher to compare two HTML fragments

Compare two HTML snippets in RSpec while ignoring whitespace, comment nodes, quote style, and attribute order.

RSpec: Tagging examples and example groups

Tagging RSpec examples and groups lets you filter slow or special cases, assign values, and trigger hooks or module includes by metadata.

Managing Rails locale files with i18n-tasks

i18n-tasks helps keep Rails locale files complete by finding missing and unused translation keys and reducing manual YAML bookkeeping.

List of Chromium Command Line Switches « Peter Beverloo

Extensive Chrome startup options help build custom browser drivers and automate testing with Capybara.

RestClient / Net::HTTP: How to communicate with self-signed or misconfigured HTTPS endpoints

HTTPS requests fail against self-signed certificates or broken certificate chains unless the correct CA, intermediate cert, or certificate store is configured.

Interacting with a Microsoft Exchange server from Ruby

Connect Ruby to Exchange Web Services for mail, calendar, and meeting data when Outlook-only tasks need automation.

Jasmine: Mocking API requests in an Angular service spec

Angular service specs can hit real routes unless uiRouter startup is disabled; ngMock and $httpBackend let API requests be intercepted and asserted in Jasmine.

Speed up RSpec by deferring garbage collection

Deferred Ruby garbage collection can speed up RSpec examples by reducing GC overhead, though gains vary and may be negligible in newer Ruby versions.

Capistrano 3: Running a command on all servers

Capistrano 3 can execute an arbitrary shell command across all app servers, useful for grepping logs or bulk remote checks.

Run Chrome in a specific resolution or user agent with Selenium

Testing web apps at mobile-like sizes or with a custom browser identity reveals layout and behavior bugs before release.

Case Study: Analyzing Web Font Performance

Web font loading can delay first paint and cause FOIT, especially on slow connections. Delivery choices, fallback handling, and reduced font variants improve perceived performance.

Configuring Webpacker deployments with Capistrano

Rails deployments with Webpacker and Capistrano often need asset-path, manifest, and compile-time tweaks to avoid slow releases and unused compression output.