FastRuby.io @fastruby.io · 4hArrange, Act, Assert reads the same in RSpec, Minitest or Capybara. Three phases of structure is what makes a test obvious to the next person who opens it. go.fastruby.io/rm2 000
FastRuby.io @fastruby.io · 7hBudget about 3 minutes of downtime per GB when you copy a deprecated Heroku Postgres into a new database, and keep the old one a few days as your cheapest rollback. go.fastruby.io/1a0 #Rails 000
FastRuby.io @fastruby.io · 29/09/2026One controller went from 39% to 60% covered once the Cypress runs counted. Nobody wrote a new test: the Rails server just runs outside SimpleCov's test lifecycle. go.fastruby.io/tpo #Rails #Testing 000
FastRuby.io @fastruby.io · 29/09/2026post.comments.update(id, ...) used to happily write to a comment on a different post. Rails 8.2 raises RecordNotFound instead. The Rails team calls the old behavior an oversight. go.fastruby.io/qis #RubyOnRails 001
FastRuby.io @fastruby.io · 28/09/2026ZJIT compiles whole methods through an SSA-based IR instead of YJIT's basic blocks. It is faster than the interpreter and not yet as fast as YJIT, which is the honest part of the pitch. go.fastruby.io/bbd #Ruby 000
FastRuby.io @fastruby.io · 28/09/2026Dual-booting a gem is one BUNDLE_GEMFILE swap. Dual-booting Ruby means the version lives in your Gemfile, your CI matrix, and your version manager, so a next? helper in the Gemfile is where it starts. go.fastruby.io/oqn #Ruby 000
FastRuby.io @fastruby.io · 26/09/2026No gem to install, no code to touch. A Gemfile.lock is enough to list your Rails app known CVEs. www.fastruby.io/security-ris... 000
FastRuby.io @fastruby.io · 25/09/2026Three of the seven CVEs here do not live in Rails at all. Two sit in net-imap, one in REXML. A Rails bump leaves every one of them open. go.fastruby.io/g3a #RailsSecurity 000
FastRuby.io @fastruby.io · 25/09/2026Your coverage number is not just low, it is wrong about which code is untested. Everything Cypress exercises is invisible to SimpleCov, so you end up writing tests for lines already covered. go.fastruby.io/g76 #Ruby #Testing 000
FastRuby.io @fastruby.io · 24/09/2026Rails 7.0 to 8.1 in 8 pull requests, dual booting through every version in between, and the client's verdict was that nothing ever broke. go.fastruby.io/3pc #RailsUpgrade 100
FastRuby.io @fastruby.io · 24/09/2026Pick your upgrade target by its open advisories, not just the version you're leaving. Rails 3.0 to 7.2 indexed. www.fastruby.io/security-ris... 000
FastRuby.io @fastruby.io · 14/09/2026Running the new code next to the old one is not the win. #TechDebt only drops when you delete the legacy path. Shadow-log both, compare, then flip the flag. go.fastruby.io/sow #LegacyCode #StranglerFig #DesignPatterns 000
FastRuby.io @fastruby.io · 14/09/2026#SimpleCov 1.0 filters test directories by default when you call start with no arguments, so your coverage number can drop without a single line changing. Recalibrate the baseline before you panic. go.fastruby.io/xfr #Ruby 000
FastRuby.io @fastruby.io · 12/09/2026Parallelizing your RSpec test suite could produce massive performance gains. For example: Nearly 2 hours down to under 5 minutes! Here is the part teams skip: isolating Redis and cache per worker, not just the database. go.fastruby.io/vo1 #RSpec #Ruby #Performance 000
FastRuby.io @fastruby.io · 11/09/2026Skipping versions feels faster until a user hits a bug and nobody can say which jump introduced it. go.fastruby.io/6sc #RailsUpgrade #RubyOnRails 000
FastRuby.io @fastruby.io · 11/09/2026We measured 304 blog pages and 20 came back with content quality problems. The fix that sticks is not the cleanup, it is the CI check that fails the next pull request. go.fastruby.io/4np #RubyOnRails #CI 000
FastRuby.io @fastruby.io · 10/09/2026`load_defaults` is not all or nothing. Flip it to the target version, then override the one setting you are not ready for, like keeping dom_testing_default_html_version on html4. go.fastruby.io/svl #RailsUpgrade 000
FastRuby.io @fastruby.io · 10/09/2026Rails 6.1 stopped trusting raw SQL in order, reorder, and pluck. Need it anyway? Wrap it in `Arel.sql`. Otherwise you get ActiveRecord::UnknownAttributeReference. go.fastruby.io/xtw #RailsSecurity 001
FastRuby.io @fastruby.io · 09/09/2026One service left at DEBUG can dominate an APM bill, because log ingestion is priced by volume, not by host. go.fastruby.io/s43 #Observability 000
FastRuby.io @fastruby.io · 09/09/2026The tell for tech debt is not a broken build. It is estimates quietly stretching and a few tests marked skip so the suite stays green. go.fastruby.io/7hl #TechnicalDebt 010
FastRuby.io @fastruby.io · 08/09/2026We refreshed our Ruby 4.0 write-up with clearer reasoning on the API changes. #ZJIT and #RubyBox are opt-in, but #Ractor drops four methods, so that is the part that can break your code. go.fastruby.io/3me #Ruby 000
FastRuby.io @fastruby.io · 08/09/2026Dual-booting a #Rails upgrade inside #Docker? Move RUBY_VERSION and BUNDLE_GEMFILE into build args, then hide the next-version service behind a Compose profile so both apps never fight over the same port. go.fastruby.io/b5e #RailsUpgrade 000
FastRuby.io @fastruby.io · 04/09/2026On an EOL Rails version there is no patch coming. Not late, not ever. The fix is the upgrade, then the dependency bumps around it: net-imap 0.5.7, rexml 3.4.2. go.fastruby.io/6qv #RailsSecurity 000
FastRuby.io @fastruby.io · 03/09/2026One unmaintained gem can hold a whole Rails upgrade hostage. In one app it was spree_active_shipping pulling in a deprecated dependency, and writing a replacement turned out cheaper than forking it. go.fastruby.io/vrp #TechnicalDebt #Rails 100
FastRuby.io @fastruby.io · 03/09/2026Cannot patch libvips today? Vips.block_untrusted(true) closes the Active Storage file-read hole until you can. Stopgap, not a fix. go.fastruby.io/w0k #RailsSecurity 110
Reposted by FastRuby.ioHanakai @hanakai.org · 02/09/2026This week we’re saying thanks to our silver sponsors! That’s @honeybadger.io, @fastruby.io, and @appsignal.com, all back for another year, as well as new kid on the block @serpapi.com! Thank you all for your support! 💛 hanakai.org/blog/2026/09...hanakai.orgThanking our silver sponsors, and Carolyn Cole“Reading your code is a larger cost than creating it, so having more organization is a definite benefit.” Week three of our sponsorship drive. 044
FastRuby.io @fastruby.io · 02/09/2026Our blog has no database and no CMS. Posts are Markdown in the repo we already work in, reviewed in pull requests like any other change. go.fastruby.io/vrh #Jekyll #Ruby 000
FastRuby.io @fastruby.io · 02/09/2026Skip the agent. Most Rails teams have a retrieval problem, and an embedding model plus pgvector fixes more of it than any autonomous system will. go.fastruby.io/xhn #RubyOnRails #AI 000
FastRuby.io @fastruby.io · 01/09/2026Refactor sprints lose to a boring habit: tidy the file you were already touching. Debt-free is not the goal, intentional is. go.fastruby.io/siz #TechnicalDebt #RubyOnRails 000
FastRuby.io @fastruby.io · 01/09/2026A clean audit today is not clean next month. New advisories land, and the same Gemfile.lock starts failing. www.fastruby.io/security-ris... 000
FastRuby.io @fastruby.io · 31/08/2026Config test: could you open source this repo tomorrow without rotating a single credential? www.fastruby.io/twelve-facto... 000
FastRuby.io @fastruby.io · 31/08/2026The option nobody pitches: not one monolith, not microservices, but a few monoliths with clear seams. www.fastruby.io/monolith?utm... 000
FastRuby.io @fastruby.io · 29/08/2026A React + Redux todo list needs three JS files: store, serializer, boilerplate. In Hotwire it collapses to a controller and a view. Turbo + Stimulus ship around 35KB gzipped, React + React-DOM alone runs 45KB. go.fastruby.io/ff8 #Hotwire #RubyOnRails 020
FastRuby.io @fastruby.io · 28/08/2026Does your #Rails app allocate objects? Then you should upgrade Ruby! Allocations are much faster starting with Ruby 4.0. Aaron Patterson (@tenderlove) explains why in this short 👇 www.youtube.com/shorts/VSqC2...youtube.comRuby object allocation just got fasterAaron Patterson (@tenderlove) on Ruby 4.0 allocation performance 020
FastRuby.io @fastruby.io · 28/08/2026GitHub's Ubuntu runners ship with MySQL preinstalled, so if your CI hangs, check whether sudo service mysql start is fighting your containerized MySQL on 127.0.0.1:3306. go.fastruby.io/jyb #GitHubActions #MySQL #Rails 000
FastRuby.io @fastruby.io · 27/08/2026Rails still doesn't automatically balance reads across database replicas, you have to route that yourself once a single database becomes a bottleneck. go.fastruby.io/1oh #Rails #Scalability 000
FastRuby.io @fastruby.io · 27/08/2026When a single Postgres database becomes your bottleneck, Rails gives you three ways out: read replicas, model level sharding, and full horizontal partitioning by category. go.fastruby.io/sy6 #Rails #ActiveRecord 000
FastRuby.io @fastruby.io · 26/08/2026Rails 7 quietly removed every deprecated method from ActiveModel::Error, the endpoint of a long evolution from plain hashes to queryable error objects. go.fastruby.io/xss #Rails #RubyOnRails 000
FastRuby.io @fastruby.io · 26/08/2026Hanami 2.2.1 needs Ruby 3.1+ (3.4 recommended). We keep a compatibility table so you're not guessing before an upgrade. go.fastruby.io/rdq #Hanami #Ruby 000
FastRuby.io @fastruby.io · 25/08/2026Multi-stage Dockerfiles keep your compilers out of production, so fewer packages means fewer CVEs to patch. go.fastruby.io/s9a #Docker #DevOps 000
FastRuby.io @fastruby.io · 25/08/2026Dual-booting Ruby means testing two versions in the same CI matrix with one flag in your Gemfile, no second pipeline needed. go.fastruby.io/tf8 #RubyUpgrade #CI 000
FastRuby.io @fastruby.io · 24/08/2026When an internal gem blocks a Ruby or Rails upgrade, the fix depends on whether the bug is yours or a dependency's, sometimes you end up forking the gem just to keep moving. go.fastruby.io/e2o #RubyUpgrade #TechnicalDebt 000
FastRuby.io @fastruby.io · 24/08/2026Bumping activestorage to 8.1.3.1 does not fix CVE-2026-66066 by itself. The fix needs libvips 8.13+, and rebuilding on a Debian bullseye base quietly reinstalls 8.10.5 every time. go.fastruby.io/vdx #RailsSecurity 011
FastRuby.io @fastruby.io · 22/08/2026Run Coverband as a standalone server on port 9022 next to your Cypress suite, dump it to JSON with a rake task, then collate it into SimpleCov with the rails profile. Your end to end runs finally count. go.fastruby.io/of0 #Ruby #Testing 000
FastRuby.io @fastruby.io · 21/08/2026Gemstash defaults to localhost:9292. Here's how to pick the right way to distribute a private Ruby gem, from a plain git repo to a full commercial registry. go.fastruby.io/89b #Ruby #RubyGems 000
FastRuby.io @fastruby.io · 21/08/2026Upgrading Rails does not automatically patch libvips, net-imap, or rexml. We found seven CVEs that need direct attention beyond a Rails bump, including one exploitable under default config. go.fastruby.io/73j #Rails #Security 000
FastRuby.io @fastruby.io · 20/08/2026You'd be surprised how many Fortune 500 companies are still running EOLed versions of #Ruby and #Rails in production, so we wouldn't be surprised if they're still using 8.13. Thank you so much for your effort maintaining `libvips`, John! We appreciate you. ❤️ 010
FastRuby.io @fastruby.io · 20/08/2026bundler-audit only reads Gemfile.lock, so the libvips version behind CVE-2026-66066 never shows up in your report. Upgrading Rails is not the same as patching it. go.fastruby.io/g57 #RailsSecurity 000
FastRuby.io @fastruby.io · 20/08/2026On Aug 26, OmbuLabs is running a 2-hour #Claude workshop for small business owners and operators. 10 spots available, no technical knowledge required! You build one working skill and you roll it out by the end of the workshop. RSVP over here right👉 www.ombulabs.ai/workshops/cl... #SmallBusiness 000