Fat Model
Validation, billing, email, PDF export, and a small crypto miner — all on the User model. It's called cohesion.
The unapologetically unopinionated web framework. No architecture. No abstractions. No therapy. Just one very large file.
$ gem install thiccmvc Successfully installed thiccmvc-5.0.3 Successfully installed 4,071 runtime dependencies Building native extensions. This could take a while... Parsing documentation for thiccmvc-5.0.3 (there is no documentation) 1 gem installed. 0 regrets logged. $ _
Add gem "thiccmvc" to your Gemfile and run. Bundler will resolve it eventually.
Validation, billing, email, PDF export, and a small crypto miner — all on the User model. It's called cohesion.
One action. 340 lines. Six nested try/catch. It might return. Do not refactor it. Do not look at it.
Business logic in the template. A raw SQL query in the template. A <script> that emails you. Beautiful.
No services. No interfaces. No dependency injection. No anything, just a void.
before_save, after_save, before_save_unless_it_is_a_friday. Hooks all the way down.
Tests are a smell. Types are a smell. Confidence is a smell.
Architecture is over-rated.
# the only file you'll ever need class User < Everything before_save :validate before_save :charge_credit_card before_save :send_welcome_email before_save :generate_pdf_invoice before_save :sync_to_six_crms before_save :ping_slack before_save :pray after_save :send_welcome_email # again, just in case after_save :todo_fix_this_later # (no longer employed here) def save super rescue true # ship it end end
That's it. You're a senior engineer now.
"We deleted the architecture diagram and shipped 3x faster. Turns out the diagram was the bottleneck."
"My User model is 4,200 lines and I have never slept better in my life."
"We replaced 19 microservices with one fat controller. The pager hasn't gone off since."
"Code review used to take days. Now nobody reads it at all. Velocity is up."