# Rails

Rails is a full-stack web framework with tools for building front-end and back-end web applications.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How to add WorkOS AuthKit to a Ruby on Rails app

DevFeed: [How to add WorkOS AuthKit to a Ruby on Rails app](<https://devfeed.tech/articles/how-to-add-workos-authkit-to-a-ruby-on-rails-app-17461.md>)

Original publisher: [Read original article](<https://workos.com/blog/add-authkit-to-rails>)

Author: WorkOS

Published: 2026-09-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [WorkOS Blog](<https://devfeed.tech/sources/workos-blog.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [password reset](<https://devfeed.tech/topics/password-reset.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [building](<https://devfeed.tech/tags/building.md>), [cli](<https://devfeed.tech/tags/cli.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [password-reset](<https://devfeed.tech/tags/password-reset.md>), [production](<https://devfeed.tech/tags/production.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [sign-in](<https://devfeed.tech/tags/sign-in.md>)

### AI overview

A tutorial on adding WorkOS AuthKit to a Ruby on Rails application. It explains how the CLI sets up the integration, how the sealed-cookie session layer is refreshed in a Rails before_action, and how Redirect URI, Initiate login URL, and Sign-out URI settings affect authentication flows and production logout.

### Source excerpt

The CLI gets you signed in. This is the session layer underneath it: what the sealed cookie holds, how to refresh it inside a before_action, and the three dashboard settings that break logout in production.

## Why Gusto hired Evil Martians for Sidekiq infrastructure

DevFeed: [Why Gusto hired Evil Martians for Sidekiq infrastructure](<https://devfeed.tech/articles/why-gusto-hired-evil-martians-for-sidekiq-infrastructure-19795.md>)

Original publisher: [Read original article](<https://evilmartians.com/chronicles/why-gusto-hired-evil-martians-for-sidekiq-infrastructure>)

Author: Irina Nazarova (inazarova@evilmartians.com)

Published: 2026-09-02T00:00:00Z

Content type: article

Language: en

Sources: [Evil Martians](<https://devfeed.tech/sources/evil-martians.md>)

Topics: [Sidekiq](<https://devfeed.tech/topics/sidekiq.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [rails](<https://devfeed.tech/tags/rails.md>), [redis](<https://devfeed.tech/tags/redis.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [scale](<https://devfeed.tech/tags/scale.md>), [sidekiq](<https://devfeed.tech/tags/sidekiq.md>)

### AI overview

This case study examines why Gusto hired Evil Martians to work on the Sidekiq and Redis infrastructure supporting background jobs in its large Rails monolith. It discusses the operational demands of running payroll-related jobs at scale and the tradeoffs involved when a company uses consultants instead of waiting for a perfect hire.

### Source excerpt

Gusto runs payroll for 500,000+ businesses on one of the largest Rails monoliths anywhere. Why a team this strong hired Evil Martians for Sidekiq at scale, what running background jobs at that size actually takes, and when to stop waiting for the perfect hire.

## Why engineers should come to the SF Ruby Startup Conference in 2026

DevFeed: [Why engineers should come to the SF Ruby Startup Conference in 2026](<https://devfeed.tech/articles/why-engineers-should-come-to-the-sf-ruby-startup-conference-in-2026-19794.md>)

Original publisher: [Read original article](<https://evilmartians.com/chronicles/why-engineers-should-come-to-the-sf-ruby-startup-conference-in-2026>)

Author: Travis Turner (richardturner@evilmartians.com)

Published: 2026-08-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Evil Martians](<https://devfeed.tech/sources/evil-martians.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Development](<https://devfeed.tech/topics/development.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [agentic](<https://devfeed.tech/tags/agentic.md>), [ai](<https://devfeed.tech/tags/ai.md>), [conference](<https://devfeed.tech/tags/conference.md>), [developer-community](<https://devfeed.tech/tags/developer-community.md>), [llms](<https://devfeed.tech/tags/llms.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rails](<https://devfeed.tech/tags/rails.md>), [react](<https://devfeed.tech/tags/react.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

The SF Ruby Startup Conference is presented as an engineers' conference focused on Ruby, Rails, open source, production systems, and community connections. The article explains its emphasis on building Ruby success stories and highlights Inertia Rails as an approach for building Rails applications with React.

### Source excerpt

The SF Ruby Startup Conference is an engineers' conference: meet the people building Ruby open source, scaling Rails in production, and shaping what agentic Rails looks like next.

## Access control for AI agents on Rails: gating SQL with Action Policy

DevFeed: [Access control for AI agents on Rails: gating SQL with Action Policy](<https://devfeed.tech/articles/access-control-for-ai-agents-on-rails-gating-sql-with-action-policy-19778.md>)

Original publisher: [Read original article](<https://evilmartians.com/chronicles/access-control-for-ai-on-rails-gating-sql-with-action-policy>)

Author: Travis Turner (richardturner@evilmartians.com)

Published: 2026-08-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Evil Martians](<https://devfeed.tech/sources/evil-martians.md>)

Topics: [Access Control](<https://devfeed.tech/topics/access-control.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [agent observability](<https://devfeed.tech/topics/agent-observability.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [llms](<https://devfeed.tech/tags/llms.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [prompt-injection](<https://devfeed.tech/tags/prompt-injection.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains how Evil Martians protected sensitive data in an internal Rails AI assistant that uses open-ended SQL analytics. It describes moving authorization from prompts into Action Policy so read-only database access also respects which rows and fields an employee may reveal.

### Source excerpt

Our Rails AI assistant had read-only SQL access and could still return peer review scores. Learn how we kept open-ended analytics in an in-app AI assistant while making database access honor application permissions.

## Banner or no banner, that's the question

DevFeed: [Banner or no banner, that's the question](<https://devfeed.tech/articles/banner-or-no-banner-that-s-the-question-3560.md>)

Original publisher: [Read original article](<https://rubyonrails.org/2026/8/21/this-week-in-rails>)

Author: Claudio Baccigalupo

Published: 2026-08-21T00:00:00Z

Content type: article

Language: en

Sources: [Ruby on Rails: Compress the complexity of modern web apps](<https://devfeed.tech/sources/ruby-on-rails-compress-the-complexity-of-modern-web-apps.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [debugging](<https://devfeed.tech/topics/debugging.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [migration](<https://devfeed.tech/tags/migration.md>), [news](<https://devfeed.tech/tags/news.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

This week's Rails changes add console banner control, HTTP QUERY support, scoped Active Record updates, improved MIME handling, broader Ractor safety, batched schema reads including SQLite support, and several cleanup, deprecation, debugging, and test behavior updates.

### Source excerpt

Hi, it's Claudio Baccigalupo. Let's explore this week's changes in the Rails codebase.

## How to reduce Rails boot time with require-profiler and Bootsnap

DevFeed: [How to reduce Rails boot time with require-profiler and Bootsnap](<https://devfeed.tech/articles/get-in-human-cut-rails-boot-time-with-require-profiler-and-this-guide-19783.md>)

Original publisher: [Read original article](<https://evilmartians.com/chronicles/get-in-human-cut-rails-boot-time-with-require-profiler-and-this-guide>)

Author: Travis Turner (richardturner@evilmartians.com)

Published: 2026-08-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Evil Martians](<https://devfeed.tech/sources/evil-martians.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Instrumentation](<https://devfeed.tech/topics/instrumentation.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [development](<https://devfeed.tech/tags/development.md>), [docker](<https://devfeed.tech/tags/docker.md>), [dx](<https://devfeed.tech/tags/dx.md>), [instrumentation](<https://devfeed.tech/tags/instrumentation.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

This guide explains how to profile and reduce Rails application boot time using require-profiler, sampling profilers, and Bootsnap. It describes profiling results from real projects, including a 40% reduction for a 200-component monolith, and covers cache precompilation and verification in Docker-based production builds.

### Source excerpt

Rails boot time is a DX metric in the AI age: meet require-profiler, learn to actually read sampling profilers, and see the pit stop that cut a 200-component monolith's boot by 40%.

## Agents on Rails: Grok 4.6, GLM 5.3, Gemini 3.7 Flash, and Opus 4.8

DevFeed: [Agents on Rails: Grok 4.6, GLM 5.3, Gemini 3.7 Flash, and Opus 4.8](<https://devfeed.tech/articles/agents-on-rails-grok-4-6-glm-5-3-gemini-3-7-flash-and-opus-4-8-3558.md>)

Original publisher: [Read original article](<https://rubyonrails.org/2026/8/17/agents-on-rails-grok-4-6-glm-5-3-gemini-3-7-flash-and-opus-4-8>)

Author: Svyatoslav Kryukov, Artur Petrov

Published: 2026-08-17T00:00:00Z

Content type: news

Language: en

Sources: [Ruby on Rails: Compress the complexity of modern web apps](<https://devfeed.tech/sources/ruby-on-rails-compress-the-complexity-of-modern-web-apps.md>)

Topics: [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [bug](<https://devfeed.tech/tags/bug.md>), [claude](<https://devfeed.tech/tags/claude.md>), [leaderboard](<https://devfeed.tech/tags/leaderboard.md>), [models](<https://devfeed.tech/tags/models.md>), [traces](<https://devfeed.tech/tags/traces.md>)

### AI overview

Agents on Rails reports benchmark results for four newly added models: Grok 4.6, GLM 5.3, Claude Opus 4.8, and Gemini 3.7 Flash. Grok leads the newcomers with 52 of 63 completed runs, while Claude Opus 5 remains the overall leader at 58 of 63. The update also includes refreshed insights, an updated leaderboard, costs and recall rates, and full traces from the first two rounds.

### Source excerpt

Last week we launched Agents on Rails and published the first benchmark report. The response was immediate: suggestions, questions, model requests, and more than a few "but have you tried..." messages. We love the enthusiasm! We want this benchmark to be useful to you, so for this run we added four new models, updated the insights, and uploaded the full traces of the first two rounds (every command, diff, and verdict).

## Upgrading Rails 4.2 to Rails 8: Count Sites, Not Warnings

DevFeed: [Upgrading Rails 4.2 to Rails 8: Count Sites, Not Warnings](<https://devfeed.tech/articles/upgrading-rails-4-2-to-rails-8-count-sites-not-warnings-39663.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2026-08-08_upgrading-rails-4-to-rails-8>)

Published: 2026-08-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [version](<https://devfeed.tech/topics/version.md>), [Test coverage](<https://devfeed.tech/topics/coverage.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>), [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [coverage](<https://devfeed.tech/tags/coverage.md>), [docker-compose](<https://devfeed.tech/tags/docker-compose.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

An account of upgrading a multi-tenant JSON API from Rails 4.2.7.1 to Rails 8. The author argues that estimates focused on version gates missed the actual risks, and describes how characterization tests, an extracted frontend, and containerized development reduced the work.

### Source excerpt

. [Upgrading Rails 4...

## Building an agentic harness that outlasts the model

DevFeed: [Building an agentic harness that outlasts the model](<https://devfeed.tech/articles/building-an-agentic-harness-that-outlasts-the-model-1319.md>)

Original publisher: [Read original article](<https://shopify.engineering/building-an-agentic-harness-that-outlasts-the-model>)

Author: Zack Deveau

Published: 2026-07-29T15:30:00Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Application Security](<https://devfeed.tech/topics/application-security.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Code review](<https://devfeed.tech/topics/code-review.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [application-security](<https://devfeed.tech/tags/application-security.md>), [backend](<https://devfeed.tech/tags/backend.md>), [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [review](<https://devfeed.tech/tags/review.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

Shopify describes an agentic code review and test-oracle harness for application security. The harness scans software for vulnerabilities, validates findings with real tests, generates Shopify-specific fixes, and opens relevant pull requests. The article also explains its Dispatch orchestrator, parallel scanning workflow, reusable application context, and diff-based follow-up scans.

### Source excerpt

We built an agentic code review and test oracle harness that discovers vulnerabilities, proves them with real tests, and provides Shopify-tuned fixes.

## The Fellowship of Code: My Quest at Ruby for Good in Ghent

DevFeed: [The Fellowship of Code: My Quest at Ruby for Good in Ghent](<https://devfeed.tech/articles/the-fellowship-of-code-my-quest-at-ruby-for-good-in-ghent-30007.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/07/27/the-fellowship-of-code-my-quest-at-ruby-for-good-in-ghent/>)

Author: Fiona McLaren

Published: 2026-07-27T14:09:36Z

Content type: opinion

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Azure](<https://devfeed.tech/topics/azure.md>), [Content Management System](<https://devfeed.tech/topics/cms.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [azure](<https://devfeed.tech/tags/azure.md>), [cms](<https://devfeed.tech/tags/cms.md>), [coding](<https://devfeed.tech/tags/coding.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-code](<https://devfeed.tech/tags/open-source-code.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>)

### AI overview

A junior developer describes attending Ruby for Good in Ghent and contributing to SkillRX, a project providing medical education materials in low-resource areas. The team addressed inefficient Azure file-storage synchronization by planning Beacons that communicate directly with the health professionals' CMS.

### Source excerpt

It isn't very hard to pitch tech conferences. Offering a getaway from the usual desk work, a chance to pick up on new wisdoms from like-minded and genuinely inspiring folk, and room in the itinerary for sightseeing and socialising in the hip host city in between times? It's a no-brainer... well, for most. I had [...]

## Rewriting Claw's HTML parser for over-the-air updates

DevFeed: [Rewriting Claw's HTML parser for over-the-air updates](<https://devfeed.tech/articles/rewriting-claw-s-html-parser-for-over-the-air-updates-38555.md>)

Original publisher: [Read original article](<https://msfjarvis.dev/posts/rewriting-claw-html-parser-for-over-the-air-updates/>)

Author: Harsh Shandilya

Published: 2026-07-17T13:34:00Z

Content type: opinion

Language: en

Sources: [Posts on Harsh Shandilya](<https://devfeed.tech/sources/posts-on-harsh-shandilya.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [Android](<https://devfeed.tech/topics/android.md>), [API](<https://devfeed.tech/topics/api.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [css](<https://devfeed.tech/tags/css.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [llms](<https://devfeed.tech/tags/llms.md>)

### AI overview

The article describes rewriting the HTML parser in the Android app Claw, which browses Lobsters, after concerns about relying on the site's unsupported JSON API. It explains the parsing work, the breakage caused by markup changes, and the search for faster over-the-air deployment using approaches such as Expo EAS Update and Cash App's Zipline.

### Source excerpt

Struggling through a brand new framework so I can hotfix my app faster

## The joy of Inertia Rails: painting your own with 50 happy little lines

DevFeed: [The joy of Inertia Rails: painting your own with 50 happy little lines](<https://devfeed.tech/articles/the-joy-of-inertia-rails-painting-your-own-with-50-happy-little-lines-19791.md>)

Original publisher: [Read original article](<https://evilmartians.com/chronicles/the-joy-of-inertia-rails-painting-your-own-with-50-happy-little-lines>)

Author: Travis Turner (richardturner@evilmartians.com)

Published: 2026-07-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Evil Martians](<https://devfeed.tech/sources/evil-martians.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Single-page application (SPA)](<https://devfeed.tech/topics/spa.md>), [React](<https://devfeed.tech/topics/react.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [hotwire](<https://devfeed.tech/tags/hotwire.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rails](<https://devfeed.tech/tags/rails.md>), [react](<https://devfeed.tech/tags/react.md>), [turbo](<https://devfeed.tech/tags/turbo.md>)

### AI overview

This tutorial rebuilds the Inertia Rails protocol on a real Rails app using a 50-line React client and a 16-line Rails renderer. It explains how rendering JSON instead of HTML on later visits connects server-owned navigation with a frontend component model, and audits what the official gem adds.

### Source excerpt

Inertia is Turbolinks with one twist: render JSON instead of HTML on the second visit. We rebuild the whole protocol on a real Rails app with a 50-line client and a 16-line server, then audit what the real gem adds on top.

## Writing expressive RSpec tests for Ruby objects and Rails views

DevFeed: [Writing expressive RSpec tests for Ruby objects and Rails views](<https://devfeed.tech/articles/spec-tacular-ways-to-think-about-writing-expressive-rspec-30006.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/07/07/spec-tacular-ways-to-think-about-writing-expressive-rspec/>)

Author: Simon Fish

Published: 2026-07-07T13:26:00Z

Content type: tutorial

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [RSpec](<https://devfeed.tech/topics/rspec.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [rails](<https://devfeed.tech/tags/rails.md>), [render](<https://devfeed.tech/tags/render.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

The article explains how to use RSpec expressively to separate test phases, clarify expected behavior, and document interfaces. It also discusses why this approach needs adjustment when testing Rails views, which are rendered templates rather than ordinary Ruby objects.

### Source excerpt

Using RSpec's functionality expressively helps to draw focus to the right parts of a test, but it's not always easy to understand how best to use it.

## 2 Martians, greenfield to MVP in 4 weeks: agentic coding on Rails

DevFeed: [2 Martians, greenfield to MVP in 4 weeks: agentic coding on Rails](<https://devfeed.tech/articles/2-martians-greenfield-to-mvp-in-4-weeks-agentic-coding-on-rails-19776.md>)

Original publisher: [Read original article](<https://evilmartians.com/chronicles/2-martians-greenfield-to-mvp-in-4-weeks-agentic-coding-on-rails>)

Author: Travis Turner (richardturner@evilmartians.com)

Published: 2026-06-09T00:00:00Z

Content type: article

Language: en

Sources: [Evil Martians](<https://devfeed.tech/sources/evil-martians.md>)

Topics: [agentic-coding](<https://devfeed.tech/topics/agentic-coding.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [coding](<https://devfeed.tech/topics/coding.md>), [React](<https://devfeed.tech/topics/react.md>), [Storybook](<https://devfeed.tech/topics/storybook.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [stripe](<https://devfeed.tech/topics/stripe.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-coding](<https://devfeed.tech/tags/agentic-coding.md>), [ai](<https://devfeed.tech/tags/ai.md>), [app](<https://devfeed.tech/tags/app.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [building](<https://devfeed.tech/tags/building.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [coding](<https://devfeed.tech/tags/coding.md>), [designer](<https://devfeed.tech/tags/designer.md>), [developer-marketing](<https://devfeed.tech/tags/developer-marketing.md>), [developer-products](<https://devfeed.tech/tags/developer-products.md>), [google-analytics](<https://devfeed.tech/tags/google-analytics.md>), [onboarding](<https://devfeed.tech/tags/onboarding.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [payments](<https://devfeed.tech/tags/payments.md>), [platform](<https://devfeed.tech/tags/platform.md>), [product](<https://devfeed.tech/tags/product.md>), [product-development](<https://devfeed.tech/tags/product-development.md>), [production](<https://devfeed.tech/tags/production.md>), [prototype](<https://devfeed.tech/tags/prototype.md>), [rails](<https://devfeed.tech/tags/rails.md>), [react](<https://devfeed.tech/tags/react.md>), [skills](<https://devfeed.tech/tags/skills.md>), [storybook](<https://devfeed.tech/tags/storybook.md>)

### AI overview

A designer and an engineer describe how they shipped Thicket, a production MVP, in four weeks using agentic coding with Rails, Inertia, React, and Storybook. They discuss their workflow, project-specific skills, user validation, and the resulting open-source practices.

### Source excerpt

A designer and an engineer shipped a production MVP in four weeks on Rails + Inertia. In this post, we share our agentic coding stack, the skills we built, and why it clicked.

## Your AI Coding Rules Should Not Live in Cursor Rules

DevFeed: [Your AI Coding Rules Should Not Live in Cursor Rules](<https://devfeed.tech/articles/your-ai-coding-rules-should-not-live-in-cursor-rules-25170.md>)

Original publisher: [Read original article](<https://www.ivanmorgillo.com/2026/05/29/ai-coding-rules-should-not-live-in-cursor-rules/>)

Author: Ivan Morgillo

Published: 2026-05-29T16:42:19Z

Content type: opinion

Language: en

Sources: [Ivan Morgillo](<https://devfeed.tech/sources/ivan-morgillo.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [coding](<https://devfeed.tech/topics/coding.md>)

Tags: [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [coding-agents](<https://devfeed.tech/tags/coding-agents.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [rails](<https://devfeed.tech/tags/rails.md>)

### AI overview

The author argues that AI coding instructions should not be maintained separately in editor-specific files. Instead, shared development standards for Rails and Flutter projects should live in versioned Markdown files, while tool-specific files act as adapters and local project rules handle exceptions.

### Source excerpt

I stopped treating editor-specific AI rule files as the source of truth and moved my Rails and Flutter standards into plain Markdown that Cursor, Claude, Codex, Copilot, and future agents can all discover.

## Rails Security, AI, and IBB

DevFeed: [Rails Security, AI, and IBB](<https://devfeed.tech/articles/rails-security-ai-and-ibb-39005.md>)

Original publisher: [Read original article](<https://tenderlovemaking.com/2026/05/06/rails-security-ai-and-ibb/>)

Published: 2026-05-06T17:31:54Z

Content type: opinion

Language: en

Sources: [Aaron Patterson](<https://devfeed.tech/sources/aaron-patterson.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Bug Bounty](<https://devfeed.tech/topics/bugbounty.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [bug-bounty](<https://devfeed.tech/tags/bug-bounty.md>), [rails](<https://devfeed.tech/tags/rails.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

A Rails team member reflects on the Internet Bug Bounty program, describing how AI-generated low-quality security reports overwhelmed the team and contributed to the program stopping new submissions and bounty payments. The change also removed incentives for legitimate researchers and left Rails handling payment-related questions.

### Source excerpt

For quite a few years the Rails project has been working with the Internet Bug Bounty (IBB). The IBB is an organization that awarded cash to security researchers that reported issues to OSS projects participating in the IBB. For quite a while I wasn't certain about my feelings toward the program because I felt like cash rewards could incentivize low quality reports as well as encourage reporters to "haggle" about the severity of a particular bug (the IBB paid more when the bug was more severe). In the beginning that certainly was the case. We were fielding many low quality reports, and people were haggling over severity. But the program evolved, and despite the never-ending haggling, I felt it did more good (rewarding security researchers) than bad (forcing the security team to wade through low quality reports). That is, until AI came along. Sometime in 2025 our team started getting inundated with low quality AI generated reports. I know for sure this wasn't unique to just our team as well. Anyway, AI lowered the barrier to generate reports, so we were back in the era of wading through low quality reports. Only this time, the low quality reports were masquerading as high quality reports. AI made it easy to turn a bullshit problem into something that looked legit, and since there's a possibility of money involved people tried to take advantage of the situation. We even had a report where someone forgot to delete the AI generated output and just uploaded the report as-is with the following text: ## ✅ READY TO SUBMIT! *All information prepared for professional Rails bug bounty submission.* *Expected Outcome:* Rails Team Response: 1-2 weeks Fix Development: 2-8 weeks Security Release: 8-12 weeks IBB Bounty: $1,040-1,600 (80% of $1,300-2,000) *Next Step:* Copy information above into HackerOne form and submit! I enjoy using AI, but I really don't like AI being used on me. But that's not what this post is about. Recently the IBB stopped accepting new submissions. In other

## CVE-2026-41316: ERB @\_init deserialization guard bypass via def\_module / def\_method / def\_class

DevFeed: [CVE-2026-41316: ERB @\_init deserialization guard bypass via def\_module / def\_method / def\_class](<https://devfeed.tech/articles/cve-2026-41316-erb-init-deserialization-guard-bypass-via-def-module-def-method-def-class-19149.md>)

Original publisher: [Read original article](<https://www.ruby-lang.org/en/news/2026/04/21/erb-cve-2026-41316/>)

Published: 2026-04-21T07:51:00Z

Content type: news

Language: en

Sources: [Ruby-lang](<https://devfeed.tech/sources/ruby-lang.md>)

Topics: [vulnerability](<https://devfeed.tech/topics/vulnerability.md>), [Security](<https://devfeed.tech/topics/security.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Rails](<https://devfeed.tech/topics/rails.md>)

Tags: [cve](<https://devfeed.tech/tags/cve.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [security](<https://devfeed.tech/tags/security.md>), [update](<https://devfeed.tech/tags/update.md>), [vulnerability](<https://devfeed.tech/tags/vulnerability.md>)

### AI overview

Ruby reports CVE-2026-41316, a deserialization vulnerability in ERB. Ruby applications that call Marshal.load on untrusted data with erb and activesupport loaded may be vulnerable to arbitrary code execution. The advisory recommends upgrading the erb gem to a fixed version.

### Source excerpt

We published security advisory for CVE-2026-41316. CVE-2026-41316: ERB @_init deserialization guard bypass via def_module / def_method / def_class A deserialization vulnerability exists in ERB. This vulnerability has been assigned the CVE identifier CVE-2026-41316. We recommend upgrading the erb gem. Scope Any Ruby application that calls Marshal.load on untrusted data AND has both erb and activesupport loaded is vulnerable to arbitrary code execution. This includes: Ruby on Rails applications that import untrusted serialized data - any Rails app (every Rails app loads both ActiveSupport and ERB) using Marshal.load for caching, data import, or IPC Ruby tools that import untrusted serialized data - any tool using Marshal.load for caching, data import, or IPC Legacy Rails apps (pre-7.0) that still use Marshal for cookie session serialization Details ERB implements an @_init guard to prevent code execution when ERB objects are reconstructed via Marshal.load on untrusted data. However, ERB#def_method, ERB#def_module, and ERB#def_class evaluate the template source without checking this guard, allowing an attacker who controls the data passed to Marshal.load to bypass the protection and execute arbitrary code. In particular, def_module takes no arguments, making it straightforward to invoke as part of a deserialization gadget chain. Please update the erb gem to version 4.0.3.1, 4.0.4.1, 6.0.1.1, 6.0.4 or later. Affected versions erb gem 6.0.3 or lower Credits Thanks to TristanInSec for discovering this issue. History Originally published at 2026-04-21 07:51:00 (UTC) Posted by k0kubun on 21 Apr 2026

## Rails Payments in 2026: Beyond Stripe

DevFeed: [Rails Payments in 2026: Beyond Stripe](<https://devfeed.tech/articles/rails-payments-in-2026-beyond-stripe-10297.md>)

Original publisher: [Read original article](<https://dodopayments.com/blogs/rails-payments-beyond-stripe/>)

Author: Ayush Agarwal

Published: 2026-03-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Dodo Payments Blog](<https://devfeed.tech/sources/dodo-payments-blog.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [stripe](<https://devfeed.tech/topics/stripe.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [billing](<https://devfeed.tech/tags/billing.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [global](<https://devfeed.tech/tags/global.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [merchant-of-record](<https://devfeed.tech/tags/merchant-of-record.md>), [payments](<https://devfeed.tech/tags/payments.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [stripe](<https://devfeed.tech/tags/stripe.md>), [subscriptions](<https://devfeed.tech/tags/subscriptions.md>), [tax](<https://devfeed.tech/tags/tax.md>)

### AI overview

This article explains how payment integration for Ruby on Rails applications has become more complex because of global tax compliance, regional billing rules, payment methods, and revenue recovery. It presents the Merchant of Record model, including Dodo Payments, as an alternative to traditional gateway arrangements such as Stripe.

### Source excerpt

Modern payment integration for Ruby on Rails apps. Move beyond Stripe to a Merchant of Record for simpler billing, automatic tax compliance, and global payment support.

## Testing Readonly Models

DevFeed: [Testing Readonly Models](<https://devfeed.tech/articles/testing-readonly-models-20120.md>)

Original publisher: [Read original article](<https://hashrocket.com/blog/posts/testing-readonly-models>)

Author: Tony Yunker

Published: 2026-03-17T13:00:00Z

Content type: tutorial

Language: en

Sources: [Hashrocket](<https://devfeed.tech/sources/hashrocket.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [activerecord](<https://devfeed.tech/tags/activerecord.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A Rails tutorial explains how to test readonly models that normally reject database writes. It proposes a narrowly scoped test-only override that temporarily permits persistence during setup and restores readonly behavior before the test runs.

### Source excerpt

I was working with a readonly model in Rails the other day and ran into an issue whilst testing it. Here's what I ran into and the solution I came up with. Readonly models are a great way to signal that, well, you should only ever read them, not write them. Maybe you have some external system that connects to the database for writes, or maybe your Rails app connects to some data warehouse for some queries or reports. It's can be useful to have a safeguard to prevent accidental errant writes. It's actually really simple to make a model readonly, you just need to override the readonly? method: class ReadOnlyPost < ApplicationRecord def readonly? = true end Now any attempt to create/save/update/delete a ReadOnlyPost will raise a friendly ActiveRecord::ReadOnlyRecord exception. The Problem You might be able to see where this is going. For any tests that can avoid saving this readonly model to the database, (i.e. using ReadOnlyPost.new or FactoryBot.build), then we're all good. But often tests need to persist some records to the test database. And if I try to create a ReadOnlyPost, I'm going to have a bad time. RSpec.describe ReadOnlyPost, type: :model do let(:post) { ReadOnlyPost.create(title: "Title", body: "body") } it "can create a post" do expect(post).to be_a(ReadOnlyPost) end end % bundle exec rspec F Failures: 1) ReadOnlyPost can create a post Failure/Error: let(:post) { ReadOnlyPost.create(title: "Title", body: "body") } ActiveRecord::ReadOnlyRecord: ReadOnlyPost is marked as readonly # ./spec/models/read_only_post_spec.rb:4:in `block (2 levels) in <top (required)>' # ./spec/models/read_only_post_spec.rb:7:in `block (2 levels) in <top (required)>' This makes sense, the readonly property of the model doesn't go away in test - creating a record is creating a record is writing to the database, so it will fail. The Solution What we want to do is override this constraint to temporarily allow us to persist data. Ideally, we do this very narrowly to not impact the syst

## Introducing Upright: An Open Source Synthetic Monitoring System

DevFeed: [Introducing Upright: An Open Source Synthetic Monitoring System](<https://devfeed.tech/articles/introducing-upright-an-open-source-synthetic-monitoring-system-33504.md>)

Original publisher: [Read original article](<https://dev.37signals.com/introducing-upright/>)

Author: Lewis Buckley

Published: 2026-02-16T18:00:00Z

Content type: release

Language: en

Sources: [37signals Dev](<https://devfeed.tech/sources/37signals-dev.md>)

Topics: [synthetic monitoring](<https://devfeed.tech/topics/synthetic-monitoring.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Prometheus](<https://devfeed.tech/topics/prometheus.md>), [Grafana](<https://devfeed.tech/topics/grafana.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>)

Tags: [deployment](<https://devfeed.tech/tags/deployment.md>), [grafana](<https://devfeed.tech/tags/grafana.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [prometheus](<https://devfeed.tech/tags/prometheus.md>), [rails](<https://devfeed.tech/tags/rails.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [synthetic-monitoring](<https://devfeed.tech/tags/synthetic-monitoring.md>)

### AI overview

37signals is open-sourcing Upright, a synthetic monitoring system built to monitor Basecamp, HEY, Fizzy, and other services. Upright runs health checks from multiple geographic locations and reports results through Prometheus metrics for alerting and Grafana visualization.

### Source excerpt

We're open-sourcing Upright, the synthetic monitoring system we built to watch over Basecamp, HEY, Fizzy and our many other services.

## Rails Multi-Tenancy

DevFeed: [Rails Multi-Tenancy](<https://devfeed.tech/articles/rails-multi-tenancy-33513.md>)

Original publisher: [Read original article](<https://dev.37signals.com/rails-multi-tenancy/>)

Author: Mike Dalessio, Kimberly Rhodes, Fernando Olivares

Published: 2026-02-13T18:00:00Z

Content type: article

Language: en

Sources: [37signals Dev](<https://devfeed.tech/sources/37signals-dev.md>)

Topics: [Multi-tenancy](<https://devfeed.tech/topics/multi-tenancy.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Replication](<https://devfeed.tech/topics/replication.md>)

Tags: [active-record](<https://devfeed.tech/tags/active-record.md>), [databases](<https://devfeed.tech/tags/databases.md>), [demo](<https://devfeed.tech/tags/demo.md>), [developer](<https://devfeed.tech/tags/developer.md>), [multi-tenancy](<https://devfeed.tech/tags/multi-tenancy.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rails](<https://devfeed.tech/tags/rails.md>), [replication](<https://devfeed.tech/tags/replication.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

Lead Programmer Mike Dalessio discusses multi-tenancy in Rails, including 37signals' work moving Fizzy toward separate customer databases, the Active Record Tenanted gem, safeguards against accidental data leaks, and challenges involving SQLite replication and failover.

### Source excerpt

Lead Programmer Mike Dalessio shares the benefits of multi-tenant databases and how his work with Fizzy led to the the Active Record Tenanted gem.

## Naming Things Is Hard

DevFeed: [Naming Things Is Hard](<https://devfeed.tech/articles/naming-things-is-hard-30002.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/02/02/naming-things-is-hard/>)

Author: Simon Fish

Published: 2026-02-02T09:37:06Z

Content type: article

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [code](<https://devfeed.tech/tags/code.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [development](<https://devfeed.tech/tags/development.md>), [general](<https://devfeed.tech/tags/general.md>), [rails](<https://devfeed.tech/tags/rails.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [software](<https://devfeed.tech/tags/software.md>), [software-engineer](<https://devfeed.tech/tags/software-engineer.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>)

### AI overview

The article examines why naming objects and methods in code is difficult, especially when domain models such as Rails Active Record models have broad responsibilities. It argues that precise names should reflect purpose and that clarifying requirements can reveal when complex concepts should be broken into smaller parts.

### Source excerpt

Choosing good names for objects and methods in code is one of the toughest things to do as a software engineer. It comes with the great and invisible reward of simplicity - second only to having less code in the first place, having code that's easy to reason with makes extending it and debugging it in [...]

## Two Engineers, One Mentoring Story: Why Both Sides Win

DevFeed: [Two Engineers, One Mentoring Story: Why Both Sides Win](<https://devfeed.tech/articles/two-engineers-one-mentoring-story-why-both-sides-win-30001.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/01/27/two-engineers-one-mentoring-story-why-both-sides-win/>)

Author: Mila Kirova

Published: 2026-01-27T14:05:40Z

Content type: opinion

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [Learning](<https://devfeed.tech/topics/learning.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [career-progression](<https://devfeed.tech/tags/career-progression.md>), [careers](<https://devfeed.tech/tags/careers.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [experience](<https://devfeed.tech/tags/experience.md>), [insights](<https://devfeed.tech/tags/insights.md>), [mentoring](<https://devfeed.tech/tags/mentoring.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

FreeAgent engineers Carme and Mila discuss their three-year mentoring relationship, including how Carme strengthened her Ruby and Rails knowledge through guided study, practical exercises, and increasingly self-directed learning.

### Source excerpt

We are Carme and Mila, both software engineers at FreeAgent, where we collaborate as mentee and mentor. In this blog we interview each other about our mentoring relationship. We're hoping that our experience is universal and sharing our insights will be useful to anyone who is interested in mentoring. If you like what you read, [...]

## Why 37signals' Code Looks Different: Small Teams, Narrow Scope, and Selective Hiring

DevFeed: [Why 37signals' Code Looks Different: Small Teams, Narrow Scope, and Selective Hiring](<https://devfeed.tech/articles/37signals-isn-t-smarter-than-you-but-they-are-different-40600.md>)

Original publisher: [Read original article](<https://www.nateberkopec.com/blog/37signals-is-not-smarter-than-you/>)

Published: 2026-01-27T00:00:00Z

Content type: opinion

Language: en

Sources: [Nate Berkopec](<https://devfeed.tech/sources/nate-berkopec.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Code](<https://devfeed.tech/topics/code.md>), [Software as a service](<https://devfeed.tech/topics/saas.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rails](<https://devfeed.tech/tags/rails.md>), [saas](<https://devfeed.tech/tags/saas.md>), [team-building](<https://devfeed.tech/tags/team-building.md>)

### AI overview

The article argues that 37signals' clean-looking Rails code reflects a distinct engineering strategy rather than inherently superior developers. That strategy emphasizes small teams, aggressively limited product scope, and hiring highly capable engineers.

### Source excerpt

A recent episode of the Rails Business Podcast was about "striving for ideal code". The hosts are both typical "Rails Indie" owner/operators: a small team building a small SaaS. They were discussing a new podcast which is out from 37signals called "Recordables". The discussion was envy for how good and clean 37signals' code was. This is a fair assessment. They've been open-sourcing a lot of real world products lately, including: Campfire, the chat app. Fizzy, the Kanban tool. If you read them, the code looks great. We've only seen glimpses of this Rails style, which David has alluded to or shown small parts of in interviews or conference talks. Until now, we couldn't see what the Rails "house style" is because we never had a real open source application written in that style. Now we do. The discussion on the podcast was mostly a sense of envy of how good the good was, and wondering: "Why doesn't our code look that good?" Covet not thy neighbor's codebase. The reason why your code doesn't look "as good" as 37signals' is because your engineering strategy is not the same as theirs. 37signals, for all of its faults, has a unique engineering strategy, which I would summarize as: Stay small in terms of headcount to revenue ratio. Ruthlessly cut scope. 37signals' products usually do far, far less than their competition. Hire the top 10% of engineers. Most of the businesses I've ever worked for cannot say that any of these three points are honestly part of their strategy. Every time 37signals puts out a codebase or talks about their size in public, I am always shocked at how few LOC they are. Basecamp Next/2 was originally 10,000 LOC. Basecamp 3 was 18,000 LOC when released. Fizzy is 7,500 non-test LOC. Campfire is just 2,500 non-test LOC. That is fucking insane. 37signals employs 25-30 technical employees, meaning that for each individual codebase, they're maintaining under 2,500 lines per person. Most companies manage 10x that per headcount. Most indies ship 100,000+ line

[Next page](<https://devfeed.tech/topics/rails.md?cursor=WyIyMDI2LTAxLTI3VDAwOjAwOjAwKzAwOjAwIiwgIjZiYzE0OWJjLTQ5N2ItNDZkMC04Y2YyLWM3ZmE0Yzc4MTI0ZCJd>)