Consul 0.9 lets you optimize records checks
Record-level permission checks can be optimized by replacing scope lookups with a direct predicate, avoiding database ID scans for large collections.
How to set up SMTP email delivery with a Gmail account
Rails applications can send mail through Gmail’s SMTP server with smtp_settings; Google app passwords enable delivery when two-factor authentication is enabled.
Cucumber may complain about cucumber.yml being invalid when it is valid
Cucumber can report cucumber.yml as invalid even when it parses correctly; an invalid rerun file like tmp/rerun.txt may trigger the error.
Ruby: A short summary of available hooks in Cucumber
Cucumber Ruby offers scenario-level, step-level, and global lifecycle hooks, plus tag filtering and World modules for reusable helper methods.
Inspecting the page content in Capybara
Debugging Capybara page output often requires inspecting visible text, raw HTML, or parsing page.body with Nokogiri when matcher failures are hard to interpret.
BrowserStack has browser plugins for local testing
Private and internal servers can be tested through the BrowserStack cloud without exposing them publicly, even behind firewalls, proxies, or Active Directory.
How to fix: Bundler 1.13 breaks parallel_tests
Upgrading to Bundler 1.13.x can break parallel_tests with a LoadError when loading Gherkin formatters. Setting bundle config --local disable_exec_load true restores the old behavior.
RSpec: Increase readability with super_diff
Hard-to-read RSpec diffs for nested hashes and collections can be improved with super_diff, which formats expectation mismatches more clearly.
Output of ParallelTests::Cucumber::FailuresLogger was fixed in 4.9.1
ParallelTests::Cucumber::FailuresLogger now emits valid rerun arguments in version 4.9.1, so patched custom loggers can be removed and the default logger restored.
Fix a spec that only runs when called directly
RSpec examples that run only when invoked directly often need a proper _spec.rb filename; a plain .rb file may be skipped in the full suite.
SSHKit 1.9.0 failure for Capistrano deploy
Capistrano deploys can crash in sshkit-1.9.0 with NoMethodError in pretty.rb; upgrading SSHKit to 1.21.0 resolves the failure.
Cucumber features as documentation
Natural-language Cucumber features and scenarios can capture intent and context beyond one-line labels, helping future developers understand application behavior quickly.
Quick HTML testing with RubyMine
Quickly preview embed code or other HTML in RubyMine without creating a project file by using an HTML scratch file and opening it in a browser.
How to install packages from newer Ubuntu releases
Install newer Ubuntu release packages on an LTS system when new hardware or software needs them, while minimizing dependency conflicts and upgrade risk.
RCov: The difference between "code coverage" and "total coverage"
Code coverage can look misleading when blank lines and comments count against the ratio; RCov total coverage ignores them for a more useful metric.
Understanding the Selenium error "Modal Dialog Present" (aka Selenium::WebDriver::Error::UnhandledAlertError)
Intermittent Cucumber failures can come from a leftover browser alert blocking Selenium commands after an unfinished AJAX request.
Minify Font Awesome fonts with webpack
Reduce Font Awesome icon font size by subsetting unused glyphs with fontmin-webpack, keeping low CPU usage and no JavaScript while avoiding oversized font downloads.
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.
Ruby object equality
Ruby equality methods differ by purpose: == for value comparison, eql? and hash for hash keys, === for case matching, equal? for identity.
How to: Validate dynamic attributes / JSON in ActiveRecord
JSONB columns can hold dynamic attributes in ActiveRecord, but validation and strict defaults are easy to lose. JSON Schema keeps evolving hashes predictable.
Show the character set and the collation of your MySQL tables
MySQL table collation and default character set are available through SHOW TABLE STATUS and SHOW CREATE TABLE; individual columns can still use different encodings.
Rails: How to write custom email interceptors
Global mail interception in Rails can prefix subjects by environment and redirect staging mail to a fallback address unless recipients are allowlisted.
Check that a Range covers an element in both Ruby 1.9 and 1.8.7
Range#include? becomes slow for non-numeric ranges in Ruby 1.9, while Range#cover? is unavailable in 1.8.7. A compatibility method keeps one check working across both versions.
Embed Google Analytics code for some environments only
Google Analytics should run only in production to avoid polluting visitor statistics. Rails environment checks can gate the tracking snippet.