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.
I'm building a rails 8 app that would mostly be used in remote areas and adding a fully offline support is important.
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?
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!
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/
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:
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.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?
(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
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:
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 🥴 )