Happy Wednesday! Here is issue #159 of our newsletter, bringing you news and the best tools for your current or future Rails projects… 1. 🔓 Reading someone else's code used to be the safe part. Not anymore. In this article, Gelsey explains why opening a cloned repo in Claude Code or Cursor can now run code before you've read a single line. This week's keyv npm worm embeds a session-start hook into .claude/settings.json so it re-runs for anyone who opens the project. Includes what to check in a cloned repo's .claude/ and .vscode/ folders before you point your editor at it. 2. 🧶 “ensure bun is installed” on an app that’s never used Bun? Henrique and Gelsey team up to discuss Why Your Yarn App Suddenly Looks for Bun. Learn more about tracing a cssbundling-rails 1.4.3 regression that misdetects Yarn projects as Bun projects. The upstream fix has been merged but not yet released, so the workaround is to pin cssbundling-rails directly to the commit. 3. 🧹 Shipping 200KB of Bootstrap but only using 30% of it? Henrique shows you how to wire PurgeCSS into your Rails asset pipeline with cssbundling-rails to strip unused CSS selectors down to what your app actually renders. See the PostCSS config, the safelist gotchas for dynamic classes, and why Tailwind users can skip this one entirely. 4. 📈 Your Cypress or Playwright tests are exercising real Ruby code, but SimpleCov has no way to see it. Ariel shows how to capture the Ruby coverage from non-Ruby e2e runners by running Coverband's standalone server alongside your e2e suite, then merging the results with your Minitest coverage data. In a sample app, merging the two boosted total coverage from 35% to nearly 53%, revealing how much of your backend is actually being tested. 5. 🔩 A Rails app you migrate away from doesn't have to mean throwing out the deployment process. Check out Princeton University Library's in-place conversion of a Rails search app to plain Rack, swapping ActiveRecord for Rom, adding Dry Monads in place of present?/blank?, and replacing the Rails router and Zeitwerk with a more selective initialization process, all without touching how the app deploys. 6. ⚡ Stop over-provisioning for LLM streams. A 25-thread worker pool shouldn’t force you to swap your entire job backend just to handle 25 concurrent connections. Carmine Paolino’s new fiber-based patch for Solid Queue 1.6.0 turns a 99% idle wait into a high-concurrency win with a single config line: fibers: 100. 7. 📚 Stop wasting your agent's context window on navigation. Hiroshi Shibata shows how the RubyGems guides became machine-readable by adding llms.txt and llms-full.txt indices, opening up robots.txt, and serving raw Markdown at up to 8x smaller file sizes. By pointing agents at llms.txt first, you ensure their limited context budget is spent on actual answers rather than HTML markup. Security UpdatesHere are the advisories since our last newsletter:
🚨 Rails 7.2 is officially EOL. Upgrade with FastRuby.io® and get Rails upgrades by experts, not guesswork. We've put 60,000+ hours into Rails upgrades, with real case studies and open-source Claude Code skills. Upcoming Events & Learning
Check out our other articles on: Ruby | Rails | Compatibility | Upgrades | Tech Debt | AI Bookmark, share, or save them for later. We hope these links are helpful. 😉 Best, The FastRuby.io Team
|