惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
G
GRAHAM CLULEY
P
Privacy & Cybersecurity Law Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
H
Help Net Security
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs
人人都是产品经理
人人都是产品经理
Know Your Adversary
Know Your Adversary
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Recorded Future
Recorded Future
I
Intezer
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
Blog — PlanetScale
Blog — PlanetScale
Malwarebytes
Malwarebytes
Spread Privacy
Spread Privacy
T
Tor Project blog
V
Vulnerabilities – Threatpost
云风的 BLOG
云风的 BLOG
腾讯CDC
B
Blog RSS Feed
Stack Overflow Blog
Stack Overflow Blog
F
Future of Privacy Forum
MyScale Blog
MyScale Blog
Latest news
Latest news
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
The Hacker News
The Hacker News
S
Securelist
博客园 - 【当耐特】
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threat Research - Cisco Blogs
Jina AI
Jina AI
Cisco Talos Blog
Cisco Talos Blog
B
Blog
博客园 - 三生石上(FineUI控件)
Last Week in AI
Last Week in AI
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
V
V2EX
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Cloudflare Blog
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
F
Full Disclosure
C
CERT Recently Published Vulnerability Notes

Hacker News

Serving Netflix Video Traffic at 400Gb/S and Beyond (2022) [pdf] BBEdit 16 is here! | Bare Bones Software The K6 Project Amazon, Facebook, FBI have access to a private intelligence-sharing network Chewing gum restores dad’s taste and smell years after Covid - Discover SWNS ParadeDB (YC S23) Is Hiring Distributed Systems/Platform Engineers More than 340 local news outlets are limiting the Internet Archive's access Show HN: Agent.email – sign up via curl, claim with a human OTP Kenn Software Project Hail Mary – Stellar Navigation Chart Runtime - The runtime for all your team's agents Museum of Pocket Calculating Devices Spotify Will Start Reserving Concert Tickets For Fans We Reverse-Engineered Docker Sandbox's Undocumented MicroVM API Freenet Michael Keating has died at the age of 79 (1947–2026) Get your passwords out of BitWarden while you still can – OSnews Waymo pauses Atlanta service as its robotaxis keep driving into floods Indexing a year of video locally on a 5-year-old M1 Max with Gemma 4 31B Google's Antigravity Bait and Switch AI is just unauthorised plagiarism at a bigger scale Hating AI Is Good US employers spend more than $1.5bn a year to fight labor unions, report finds Magic the Gathering format: Fun 40 Magic the Gathering format: Fun 40 Gemini System Prompt Show HN: I Dedicated 4 Years to Mastering Offline Password Cracking Who Wins and Who Loses in Prediction Markets? Evidence from Polymarket FatGid - FreeBSD 14.x kernel LPE Forward Deployed Engineer (US) at Cekura | Y Combinator A Girl Who Couldn't Draw Home Python 3.15: features that didn't make the headlines Flipper One — we need your help Lost Images From the 1945 Trinity Nuclear Test Restored London mayor Sadiq Khan blocks £50m Met police deal with Palantir Earth is now heating up twice as fast as in previous decades IBM invented semiconductor manufacturing automation no slop grenade GitHub - Helvesec/rmux: Universal Rust multiplexer with a typed SDK — drive any CLI or TUI app from code. Native on Linux, macOS, and Windows. The famous o3 "GeoGuessr" prompt did not work AI Growth Engineer at Typewise | Y Combinator Vivaldi 8.0: our biggest design overhaul, ever Samuel Alito Has Exposed Himself to Felony Bribery Charges Under New Jersey Law. I’m Filing for His Disbarment and Submitting a Criminal Referral. OpenAI to confidentially file for IPO as soon as Friday: Source Haskell Foundation 2026 Update What is Demand Coop and why tech workers should join one The Letter S, by Donald Knuth [pdf] GitHub - kageroumado/phosphene: A video wallpaper engine for macOS Tahoe DOS Zone | DOS games in browser A Bipartisan Amendment Would End Police License Plate Tracking Nationwide Starship's Twelfth Flight Test On Google declaring war on the Web GitHub - kouhxp/yapsnap: Snap any video URL or audio file into plaintext. No GPU. No cloud. One command. PopuLoRA: Co-Evolving LLM Populations for Reasoning Self-⁠Play Declining America Anthropic is expanding to Colossus2. Will use GB200 Anthropic is expanding to Colossus2. Will use GB200 SpaceX S-1 In Yesterday's IO Keynote Google Declared War on the Remnants of the Web Colorado Amended SB051 (Age Verification Bill) to Exclude Open Source Projects Not alive, but not dead: disembodied human brains used for drug testing Beyond Plastics Tracked Starbucks’ ‘Widely Recyclable’ Plastic Cups. None Ended Up at a Recycling Facility. — Beyond Plastics - Working To End Single-Use Plastic Pollution Flipper One Tech Specs Cooling copper plates could slash data center energy use by 90% Qian Xuesen: The missile genius America lost and China gained (2025) Manton Reece - Why is Inkwell stuck in review Why I Don’t Vibe Code GitHub - mupt-ai/dari-docs: optimize your documentation through fleets of agents Ask HN: Shouldn't Google need to give a public statement about Railway incident? Hormuz closure could trigger 'agrifood shock', price crisis within a year CEO Walks Back Comment About Replacing 'Lower-Value Human Capital' with AI twitter.com OpenAI Is Preparing to File for an IPO Soon A new generation of ads for the AI era of Search GitHub - bytedance/Lance: A 3B-active-parameter native unified multimodal model for image and video understanding, generation, and editing. SBCL: the ultimate assembly code breadboard Structural Backpressure Beats Smarter Agents Intuit to lay off over 3,000 employees to refocus on AI Nobel laureate Olga Tokarczuk apparently used AI to write her latest novel. GitHub - ueberdosis/hocuspocus: The Yjs CRDT WebSocket backend for conflict-free real-time collaboration in your app. Testing distributed systems with AI agents VICTORY! Tennessee man jailed 37 days for Trump meme wins $835,000 settlement after First Amendment lawsuit After Town Bans Flock, Councilmember Crashes Out, Proposes Internet and Phone Ban GitHub confirms breach of 3,800 repos via malicious VSCode extension 560-610 minutes of exercise a week needed for substantial heart benefits - BMJ Group Daniel's Blog · America's Greatest Strategic Blunder: The Imprisonment of Qian Xuesen Adieu Visa et Mastercard : 130 millions d'Européens basculent vers un paiement 100 % souverain dès 2026 Meta blocks human rights accounts from reaching audiences in Saudi Arabia and the UAE Anna’s Archive Hit With $19.5m Default Judgment and Global Domain Takedown Order Saying Goodbye to Asm.js Google's AI is being manipulated. The search giant is quietly fighting back Map of Metal Qwen3.7-Max: The Agent Frontier No way to parse integers in C Learnings from 100K Lines of Rust with AI The weird, wild story of humanity's obsession with gold Raster | Enter the Grid Everything in C is undefined behavior Ex-Apple engineer says Apple deliberately slows older phones via updates Infomaniak secures its independence and its DNA for the long term
Farewell to Rails-way: When Rails-way does not work anymore?
2026-05-19 · via Hacker News

I recently published an article on why I decided to explore an alternative way of writing Rails apps compared to the Rails-way, and what the Rails-way really is when we look at how people and 37signals write applications. In this article, I will discuss bold signs that it's time to let go of writing Rails apps the old way and start exploring alternative paths.

First of all, you can’t say that Rails-way works for some types of apps, like Fintech or E-commerce, and not for others from the beginning. This is the totally wrong angle to look at it. Rails-way is great for all types of apps up to some point.

High-level and organizational signs

You work on a Rails application, the business is growing, so is your application and the team. During the process, you may observe the following situations:

  • Developers lose their confidence in introducing changes - it’s taking longer from passing PR to code review to the deployment, and the reason is not that your developers have gotten worse over time.
  • The AI adoption among developers is not as rapid as you expected - the benefits are obvious. Still, the developers do not seem to be taking advantage of it, and the pace of introducing new changes has not increased much over the last few months.
  • It’s hard to split developers into smaller teams - you would like to manage smaller teams focused on certain aspects of the app, but it’s hard to do the split logically, or teams are getting into code conflicts over and over again.
  • Onboarding takes weeks, not days - you may have the documentation in place and other people to help, but even senior developers are not able to ship their first PR within the first few days.
  • The business can’t get straight answers - you struggle with explaining to the business how the application and their own rules are working.

This won’t happen overnight; those signs will accumulate over time and will visibly decrease your ability to evolve applications as the business grows.

Low-level and technical signs

Technical debt will significantly affect the team's efficiency, regardless of team members' experience or the business direction. You may not incur the debt directly by going for shortcuts or agreeing to temporary solutions, but it will still grow indirectly. Here are the symptoms:

  • The more features you ship, the more you deal with database performance issues - developers deal with multiple N+1 issues or attempt to refactor complex JOINs more often.
  • The test suite becomes a tax - slow and flaky, consuming the CI minutes and making the whole cycle of delivery slower.
  • Simple changes have an unknowable blast radius - you may change just one field in a model, but it affects so many other places that you are not able to predict the consequences and places where the test should be conducted.
  • Business rules are duplicated across multiple places, making answering questions and making changes harder; refactoring rarely happens despite the feature having been tested.

Unfortunately, I have also recently realized that many developers do not consider those symptoms to be wrong; they treat them as an integral part of working on any Rails application.

Why Rails-way does not work anymore

The core idea of Rails was always to ship quickly and make coding a pleasure and a fun experience. You'll agree it does it better than any other solution in any technology currently out there. However, the speed and fun usually end when we meet real complexity: a business with many departments and tons of edge cases. At that moment, the double-edged sword can hurt us really badly.

A model good for everything is good for nothing

According to Rails-way, models are a first-class place for business logic. They serve as a DB table mapping, an object with business behavior, a validation container, and lifecycle events emitter via callbacks. Most likely, in many apps you will also find two God objects: User (or some variation of it) and the model that represents the business domain; for the events app, it will be Event, for the blogging app it will be Article, and so on.

They also often mix the entity state with the process state. A common and well-known example is using enums, for example, in Order - it can be paid, delivered, or aborted.

With the model conventions, you can ship very quickly; the interface is easily accessible, and it’s clear how to extend it. Going through multiple contexts is an advantage, but it becomes a curse as complexity grows. You are not only dealing with performance issues but also with a loss of confidence in introducing changes. One change in the model’s method can affect multiple places in the app that you are not even aware of.

When standard conventions are not enough, you invent your own

As soon as Rails conventions do not cover your needs, you start inventing your own conventions. This is the reason why we have endless discussions about the shape of the service object. Rails Guides do not share any mental model for dealing with the real complexity. Concerns seem to help a little: they help organize models and eliminate duplication, but in many cases, they contribute to even tighter coupling between models that handle completely different business departments or processes.

This is why I called Rails-way the Rails in the wild: it’s just people trying to handle complexity on their own, based on their experiences and ideas, because they have outgrown the widely promoted approach to building Rails apps. Working for years on big legacy applications, I saw that many times.

The disconnection from the business core

The marketing around Rails feels disconnected from the business, building its own abstraction. No wonder the naming is hard if you are so disconnected from the business domain where the business is primarily operating. Yes, Rails is optimized for happiness and helps to accelerate with AI agents thanks to conversation over configuration. No, we are not just CRUD monkeys hired to turn ideas into working concepts quickly.

To build complex and enterprise applications, it’s crucial to truly understand the business, build software to solve its problems, map the code to real-world processes, and share the common understanding between all stakeholders; these might sound like big words, but once you hit complexity, this is the mental model for being a software engineer you need to make it right. Rails-way does not help with that.

Last but not least

Rails-way works very well for thousands of apps and may serve your application as well. Although what I have seen through the last 16 years and keep seeing up to this day, when the complexity is growing, at some point you have to make a decision: you either try to grow your own version of Rails-way or switch to a domain-driven version of Rails that follows a slightly different approach and provides battle-tested patterns for handling complexity. It’s worth noting that following any of these paths won’t make you abandon Rails-way completely; this is not the point of inventing something completely new.

The latter is the approach I’m currently exploring and moving towards, both in mindset and in how I write Rails applications. In the next article, I will demonstrate an alternative approach to the Rails way that is designed to handle complexity without reducing the team’s confidence in making changes.