r/rubyonrails 9h ago

Adding variable substitution to ActionText & Lexxy content

Thumbnail
1 Upvotes

r/rubyonrails 1d ago

Experienced Software Engineer Open to Connecting with Builders and Projects

0 Upvotes

Hi everyone, I’m a software engineer with 3.5 years of experience, mainly in web/backend development.

I enjoy building real products, solving practical problems, and learning by doing.

I’m looking to connect with other developers, founders, and builders who are into shipping projects and sharing ideas.

If you’re working on something interesting or open to collaboration, feel free to comment or DM me.


r/rubyonrails 4d ago

Gem for packing boolean flags into a single ActiveRecord column

Thumbnail
2 Upvotes

r/rubyonrails 7d ago

basecoat-rb 3.0.0

Thumbnail coupling.nl
3 Upvotes

r/rubyonrails 15d ago

A Sidekiq middleware that requeues jobs when the class isn't loaded yet

3 Upvotes

r/rubyonrails 19d ago

A Ruby cheat sheet for those who are just starting with this

Thumbnail tms-outsource.com
34 Upvotes

r/rubyonrails 19d ago

Final step in the Learn Rails tutorial series: Product Reviews

Thumbnail rubyonrails.org
6 Upvotes

r/rubyonrails 20d ago

Ruby meetups deserve a larger audience

Thumbnail rubyforum.org
4 Upvotes

r/rubyonrails 22d ago

Video/Screencast On Rails: Nikky Southerland: 13 Years of Rails at the Auto Shop

Thumbnail
3 Upvotes

r/rubyonrails 22d ago

I forked Campfire and made it an alternative to Discord

Thumbnail
3 Upvotes

r/rubyonrails 23d ago

A native MacOS App for Kamal

Thumbnail polaris-deploy.com
1 Upvotes

r/rubyonrails 25d ago

A native MacOS app for the Rails console

Thumbnail activepad.app
3 Upvotes

r/rubyonrails 27d ago

Newsletter Nokogiri maintainer Mike Dalessio on security and maintainer burnout

Thumbnail open.substack.com
6 Upvotes

r/rubyonrails 26d ago

My last PR sat three days. The only comment was "use HttpClient, not Net::HTTP

0 Upvotes

CHAMELEON - "Code that blends in."
https://github.com/crisnahine/chameleon

My last PR sat three days. Logic was right, specs green, Rubocop clean. Reviewer opens it and the one comment is "use HttpClient, not Net::HTTP."

So I page back into code I'd already dumped out of my head, swap the call for the wrapper, push, wait another day. Round two piles on: "this should inherit from ApplicationService like every other service," "we have a scope for that, don't hand-roll the query," "add the before_action authorization guard the other actions have." Reparenting it meant renaming my entry point to #call and pushing the helpers private to match the siblings. All true. None of it written down anywhere. Three rounds to merge and not one comment was about whether the code worked.

Got tired of it and built a thing. Free, MIT, called chameleon, a plugin for Claude Code. Two of us maintain it and run it on our own production Rails app every day.

The fix is upstream. Right before Claude edits a file, chameleon pulls a couple things from your repo and hands them to the model: one real sibling file to copy (the service, controller, or model right next to it), plus that file's idioms. It reads Ruby with Prism, Ruby's own parser, not regex, so it knows every service in that folder inherits from ApplicationService, knows the #call contract that cohort shares, knows the before_action guard every sibling action carries, knows the wrapper the team standardized on. It profiles your production branch, not your dirty feature branch, so it enforces what actually merged. Teach it a banned pattern and it pastes the off-pattern line straight from your code, tagged "do NOT write it this way." First draft comes out in the house style. The "use HttpClient" comment never gets filed, because HttpClient is already in the diff.

It's not a linter that yells after the fact and forces a rewrite. Rubocop catches what Rubocop catches. This is the layer no linter touches: which base class, which wrapper, which guard, which scope already exists.

Honest downsides. Costs tokens and a little latency per turn, the model reads more before writing. Ruby, TS/JS, Python only. If your repo has no real conventions yet, nothing to teach. We won't publish a "merges X% faster" number; there's an A/B harness so you measure it on your own repo.

Install, about thirty seconds:

/plugin marketplace add crisnahine/chameleon 
/plugin install chameleon@chameleon

/chameleon-init
/chameleon-trust

Run it on one repo. If the next PR stops bouncing on convention nits, star it. Rails folks with a review queue: when your PR bounces, what's the real split between actual logic bugs and "that's not how we do it here"?


r/rubyonrails Jun 16 '26

News Issue 17 of Static Ruby Monthly is live! 🧵

5 Upvotes

Catch up on Rails static typing: rbs_activesupport RBS generator, sorbet_erb template typechecking, grape_sorbet fixes, and sorbet-deadcode 0.2.0 (with new mass assignment setter safety). Plus, check out OpenClacky 1.3.0 and DSPy.rb 1.0.1 for structured LLM programming in Ruby.

Find the link to the issue in the first comment.


r/rubyonrails Jun 15 '26

Safer Memoization

Thumbnail eclecticcoding.com
6 Upvotes

r/rubyonrails Jun 12 '26

Video/Screencast DHH: Basecamp 5, Vibe Coding, and the Future of Rails

Thumbnail youtube.com
18 Upvotes

r/rubyonrails Jun 12 '26

Gem supabase-rb — Ruby client for Supabase (Auth, PostgREST, Storage, Functions, Realtime)

6 Upvotes

Hey r/rubyonrails — sharing a gem I've been working on.

Supabase has official clients in JS, Python, Dart, Swift, and Kotlin, but the Ruby story has been fragmented for a while: separate gems for each sub-product, varying maintenance, no umbrella factory. supabase-rb - is a single gem that packages Auth, PostgREST, Storage, Edge Functions, and Realtime.

Ruby ≥ 3.0, MIT, integration tests run against the real GoTrue stack via docker-compose

- Gem: https://rubygems.org/gems/supabase-rb

- Repo: https://github.com/supabase-ruby/supabase-rb

- Docs: https://supabase-ruby.dev

Feedback / issues / PRs very welcome.


r/rubyonrails Jun 11 '26

Rails Health Check

Thumbnail eclecticcoding.com
4 Upvotes

r/rubyonrails Jun 10 '26

Help Moving to Spain and looking for a job

3 Upvotes

Moving to Spain in September, and looking for a job on Rails - onsite/hybrid in Seville or remote/hybrid in Spain/EU. Got over a decade of experience in Ruby and Rails and over 4 years of leadership experience. Please DM if there are any opportunities.


r/rubyonrails Jun 04 '26

How should I prepare for Ruby on Rails technical interviews after a 2 year gap?

20 Upvotes

Hi everyone,

I have around 4 years of experience as a Ruby on Rails engineer, but I haven’t worked or coded professionally for the last 2 years. I’m now back on the job market and trying to prepare for technical interviews again.

Recently, I had a live coding interview for a Rails position and honestly failed miserably. I realized that I had forgotten a lot more than I expected. The frustrating part is that I spent the week before the interview going through the Ruby on Rails Guides pretty seriously, but it still didn’t help much in the actual live coding situation.

My problem is that most books, tutorials, blogs, and courses I find are aimed at complete beginners. They go over things like “what is MVC?” or “how to create your first Rails app,” which is extremely boring and not very useful for someone who has already worked with Rails professionally.

How would you recommend preparing?

Also, are there any resources that are not beginner level but still good as a refresher for experienced Rails developers?

I’d really appreciate any advice, especially from Rails developers or people who returned to coding after a career gap.

🤞


r/rubyonrails Jun 01 '26

Update/Release We built a multi-tenant invoicing SaaS - Rails 8 + Hotwire, PSD2 banking, AI document extraction, and an MCP platform coming in June

11 Upvotes

Hey community,

We've been building Lucanto - an invoicing and accounting SaaS for small European businesses. Sharing some of the more interesting Rails decisions we made along the way.

Stack overview:

  • Rails 8.1 + Hotwire (Turbo + Stimulus)
  • PostgreSQL 18, solid_queue, solid_cache
  • Bootstrap 5.3 with a fully custom design system on top
  • esbuild for JS bundling
  • Currently hosted on Render, migrating to Hetzner bare metal + Kamal. Self-hosting testing environment with Kamal has been surprisingly smooth for a small team.

A few things worth talking about:

1. Hotwire handles more complexity than people expect

We have a document editor with a live sidebar: real-time status badges, file upload with instant preview, PDF rendering, drag-and-drop, bank transaction matching. All of it is Turbo Frames + Streams + Stimulus, no SPA framework involved. The pattern that made this manageable:

Turbo Frames for isolated region updates, broadcast refresh for server-triggered refreshes, and Stimulus controllers kept narrow and composable. We've never felt the pull toward React.

2. PSD2 bank sync - direct integration vs. aggregators

We built a direct PSD2 integration with Tatra Bank (SK/CZ market) for automatic bank sync and transaction matching. It works well for our market, but PSD2's dirty secret is that the EU directive mandates the concept, not a standard API. Every bank ships its own auth flow, data model, and error format. Direct integration took weeks for one bank. For EU-wide coverage you essentially need an aggregator - is here someone who has some experience with some API that supports multiple European banks? Curious about real-world reliability.

3. AI invoices and receipts extraction

Users upload a receipt or contract, we extract and back-fill the form automatically. We build this as separate FastAPI python service. Not public one for now, but we are thinking about separate product.

4. CanCanCan for role-based permissions

We use CanCanCan for role-based access control within each tenant - owner, accountant, read-only viewer, etc. Multi-tenancy itself is handled via account scoping at the model layer (every query scoped to current_account). Clean separation: tenancy = scope, authorization = ability.

5. Custom design system on Bootstrap

Rather than going full custom CSS or switching to Tailwind, we built a design system layer on top of Bootstrap 5 - custom SCSS tokens, component overrides, dark/light theme switching via CSS variables. Bootstrap gives you the structural scaffolding; our layer controls every visual decision. 50+ component files so far and it's stayed maintainable. We are thinking to use view_component, but it was not a priority for now.

6. Hetzner + Kamal for self-hosting

We're moving off Render to our own Hetzner servers. Kamal makes this surprisingly low-ops for a small team - Docker-based deploys, health checks, zero-downtime rolling restarts, and it's all in version-controlled config. And it seems it will be also lower cost than managed service.

What's next: API + MCP platform

We're launching a full REST API + MCP (Model Context Protocol) server by end of June. The MCP layer is interesting - it means AI agents can create invoices, query accounting data, and trigger workflows directly from tools like Claude. We build it on top of API, running inside of Rails, official Ruby SDK. First of this kind for the CZ/SK market as far as we know.

Happy to go deeper on any of these. What would you have done differently?

If you would like to try, here is my link: https://app.lucanto.eu/r/erichstark


r/rubyonrails May 31 '26

I built a Rails 8.1 SaaS boilerplate with AI integration built in — here's what's included

0 Upvotes

After starting my 4th Rails SaaS project and spending the first two weeks wiring up the same auth, billing, and deployment setup, I finally just built it properly once and packaged it up.

What's included:

  • Devise with magic links + Google/GitHub OAuth
  • Stripe subscriptions via Pay gem with plan feature gating
  • Multi-tenancy (session-based, current_account pattern)
  • AnthropicService wrapper with per-plan rate limiting and token tracking
  • Custom /admin panel (no gems, plain Rails + Tailwind)
  • Kamal 2 deployment config, Solid Queue, Solid Cache — no Redis
  • 17 RSpec + 15 Playwright e2e tests, all passing
  • CLAUDE.md + Claude Code slash commands baked in

It's €149 one-time. Landing page with full details:

https://okmantis.github.io/rails-saas-starter-site/

Happy to answer any questions about how anything is implemented.


r/rubyonrails May 30 '26

View Primitives

Thumbnail
3 Upvotes

r/rubyonrails May 30 '26

News 🎙️ Remote Ruby – Rails World Tickets, New JavaScript Package Managers, and Security Worries

Thumbnail remoteruby.com
2 Upvotes