Sign in

FastRuby.io

@fastruby.io
27 followers 8 following 186 posts

Productized services by @OmbuLabs.ai to remediate technical debt in #Ruby and #Rails applications. Open source contributors and maintainers.

PostsRepliesMedia
FastRuby.io @fastruby.io · 4h
Arrange, 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 · 7h
Budget 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/2026
One 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/2026
post.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/2026
ZJIT 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/2026
Dual-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/2026
No 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/2026
Your 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/2026
Rails 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/2026
Pick 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/2026
Running 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/2026
Parallelizing 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/2026
Skipping 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/2026
We 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/2026
Rails 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/2026
One 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/2026
The 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/2026
We 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/2026
Dual-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 · 03/09/2026
One 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 · 02/09/2026
Our 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/2026
Skip 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/2026
Refactor 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/2026
A 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/2026
Config 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/2026
The 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/2026
A 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/2026
GitHub'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/2026
Rails 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 · 26/08/2026
Rails 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 · 25/08/2026
Multi-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 · 24/08/2026
Bumping 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/2026
Run 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/2026
Gemstash 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 · 20/08/2026
On 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
FastRuby.io @fastruby.io · 19/08/2026
SimpleCov misses every line your Cypress tests exercise; merging Coverband data in took a sample app from 35% to 53% coverage without writing a single new test. go.fastruby.io/qfh #Ruby
000
FastRuby.io @fastruby.io · 18/08/2026
There is no default architecture. The right one depends on the problems you solve, your stack, and the teams doing the work. www.fastruby.io/monolith?utm...
000
FastRuby.io @fastruby.io · 18/08/2026
RubyCritic, SimpleCov, and Brakeman produce three reports. We merge them into one you can act on. www.fastruby.io/static-code-...
000
FastRuby.io @fastruby.io · 17/08/2026
Every Ruby MCP gem version before 0.23.0 was open to DNS rebinding, and in-memory session state breaks the second you add a second Puma worker. go.fastruby.io/il9 #Ruby #MCP
001
FastRuby.io @fastruby.io · 14/08/2026
Opening an unfamiliar repo in Claude Code or Cursor can run code before you read a line: SessionStart hooks and .vscode/tasks.json. Check both first. go.fastruby.io/3sq #SupplyChainSecurity
000
FastRuby.io @fastruby.io · 14/08/2026
Rails build reaching for a Bun you never installed? cssbundling-rails 1.4.3 put yarn.lock in Bun's detection list. Pin ref 466cd57. go.fastruby.io/sjd #RubyOnRails
000
FastRuby.io @fastruby.io · 13/08/2026
Gemfile.lock tells you which gems you run and how they arrive. Sources over plain HTTP are a risk too. www.fastruby.io/security-ris...
000
FastRuby.io @fastruby.io · 12/08/2026
The Ruby Advisory Database is public and community-compiled. Attackers read it too, and check your version against it. www.fastruby.io/security-ris...
000
FastRuby.io @fastruby.io · 11/08/2026
Free audit: paste a Gemfile.lock, get the known CVEs in your Rails app, versions 3.0 through 7.1. www.fastruby.io/security-ris...
000
FastRuby.io @fastruby.io · 10/08/2026
An unpatched gem with a known CVE can quietly put your Rails app offside of PCI DSS, GDPR, or CCPA, and WCAG gaps stack accessibility risk on top. Compliance and security are the same problem. go.fastruby.io/87x #RailsSecurity
000
FastRuby.io @fastruby.io · 08/08/2026
Rake is not just db:migrate. It is a Ruby-native build tool that can replace your Makefiles, Bash scripts, and parts of CI in one versioned place. go.fastruby.io/nvj #Ruby
000
FastRuby.io @fastruby.io · 07/08/2026
Rails 8.1 needs Ruby 3.2 or newer and Rails 6.0 caps out below Ruby 3.0. Check every Ruby and Rails pairing, plus the security-fix windows, before you upgrade. go.fastruby.io/kvx #RailsUpgrade
000
FastRuby.io @fastruby.io · 07/08/2026
Upgrade Ruby the boring way: one stable version at a time, fix deprecations first, dual boot old and new, and bundle update --conservative so your gems do not cascade. go.fastruby.io/l8e #Ruby
000