r/rails

â–˛ 9 r/rails

How are you using Rails 8 PWA fully offline feature?

I'm building a rails 8 app that would mostly be used in remote areas and adding a fully offline support is important.

reddit.com
u/Toluwalashe — 5 days ago
â–˛ 22 r/rails

Why is it all service objects?

Mid-experienced Rails developer here. Why is it that everything is a service object? Is this because we try to fit a OOP language in a functional problem (HTTP requests)? How to have sanity?

reddit.com
u/Tadeuvich — 7 days ago
â–˛ 13 r/rails

I’m open-sourcing my Rails back-office builder for the community

Hi r/rails!

I've been working on back-office.pro for the past few years. The idea was to build a no-code development tool, powered by Ruby on Rails, that lets you quickly deploy a back office to production.

Nowadays, with AI, I feel the project is becoming less relevant. That's why I've decided to give it back to the community by making it open source.

BackOffice is an on-premise application that you can install locally (Getting Started) or deploy to a server (Deploying Back Office Pro to a Server).

It generates a back office with 25+ built-in features. You can find the full list on the Back Office Pro website.

Instead of building everything from scratch in Rails, you use an Entity Builder to define your data models. It automatically generates the corresponding database migrations and front-end interfaces.

You can then interact with your back office through a REST API (with auto-generated Swagger documentation), webhooks, or forms.

Everything is generated dynamically at runtime, so there are no extra application files to maintain in your repository, apart from the database migrations.

Here are a few screenshots of the Entity Builder to give you an idea of what it looks like:

You can even use an OpenAI API key to generate database migrations from a natural-language description of the back office you want to build.

There's a lot more to it, but here are some resources to explore:

You can find the GitHub repo here: https://github.com/back-office-pro/schematics

You can also still pull the latest Docker image here: https://hub.docker.com/r/backofficeapp/back-office

Cheers!

u/Playful_Park6553 — 5 days ago
â–˛ 42 r/rails

The keynote I thought I was going to give at Rails World

A few months before Rails World, I disappeared to the Oregon Coast with a pile of notepads and the idea that I was going to write a fairly practical keynote about making Rails codebases easier for humans and agents to work in.

That… isn’t quite the talk I ended up giving.

I wrote up some of the backstory, including how Andrea Goulet’s makers/menders framing influenced it, where WUTS came from, why I nearly convinced myself the topic sucked, and what was going through my head in the hours before walking on stage.

The post has the keynote video and links to my slides if you’d rather skip the backstory and go straight to those.

https://robbyonrails.com/articles/2026/10/09/the-keynote-i-thought-i-was-going-to-give/

u/robbyrussell — 6 days ago
â–˛ 26 r/rails

First time using Solid Queue, Rails 8 defaults on a 512 MB Render box were running 7 processes

I usually run Sidekiq on a separate instance, but for a small Rails 8 API I tried Solid Queue for the first time, with the default setup running inside Puma.

On Render's 1 CPU with 512 MB it kept getting OOM-restarted. It looked like a leak, but the container was actually running 7 processes, each holding its own copy of the app.

Eventually found 2 things were multiplying them:

  • Render sets WEB_CONCURRENCY=1, which puts Puma in cluster mode: a master plus a worker, two copies of the app for no gain on a single core.
  • With SOLID_QUEUE_IN_PUMA, Solid Queue's supervisor forks separate processes for its dispatcher, worker and scheduler. "In Puma" still means more processes.

Switching Puma to single mode and Solid Queue to async mode (threads instead of forks) took it from 7 processes to 2.

I added a record of the fix here https://englog.dev/u/ndbaba1/cutting-rails-prod-memory-by-killing-hidden-fork

but curious how others run Solid Queue on small instances, async mode in the web process, or a separate worker service from the start?

u/Then_Respect_1964 — 7 days ago
â–˛ 1 r/rails+1 crossposts

consolidating Rails test framework crud in an oubliette

(d'oh. replace 'crud' with 'clutter.' )

For 15 years, the assorted test directories cluttering the root of my projects have driven me nuts... so I decided to see how fast I could build a fully tested gem using SDD with claude - and finally fixed it.

Oubliette banishes your tests to a single location, available for execution but out of sight until you need them. Now my code and my tests live in two clean trees i can view side by side.

https://github.com/soychicka/oubliette

  • Moves test directories, fixtures, seeds, helpers, and reports into one place
    • Configures rspec, cucumber, cucumber_env, jest, and jasmine for you
    • Wires up fixtures, FactoryBot, Capybara, VCR, and SimpleCov at runtime
    • Leaves your executable JavaScript alone, but gives precise wiring instructions for Vitest, Playwright, Cypress, and Karma
  • One command to run them all (yes, wrong quest, but you get the point)
  • Tracks pass/fail/pending counts over time, so coverage drift shows up as a number that moved, not a surprise six months from now

If you need an escape hatch, rake oubliette:hoggle leads you out of the oubliette and back into the labyrinth, putting everything back where it was and cleaning up after itself.

And the important stuff:

  • Bonus 1: a brief history of the oubliette, from the famine, plague, and war of the 14th century that helped free peasants from their feudal masters.
  • Bonus 2: gratuitous Labyrinth references.
  • Bonus 3: no rewrites to any package.json files, so you're safe from gratuitous David Bowie references.

I've only tested it against Ruby 3, but it's been running happily in an rspec/capybara/cucumber-tested Rails 4 to 8 migration, moving from jQuery/Bootstrap to Stimulus/Tailwind.

Haven't released a proper gem yet: I haven't used VCR, SimpleCov, Vitest, Playwright, Cypress, or Karma in any of my projects - so those need exploration in live implementations.

If you give it a try, let me know what you think.

( and yes, I let Claude write the docs 🥴 )

u/soychicka — 10 days ago