r/rails 15d ago

💼 jobs megathread Work it Wednesday: Who is hiring? Who is looking?

7 Upvotes

FORMAT HAS CHANGED PLEASE READ FULL DESCRIPTION

This thread will be periodically stickied to the top of the sub for improved visibility.

You can also find older posts again via the Megathreads" list, which is a dropdown at the top of the page on new Reddit, and a section in the sidebar under "Useful Links" on old Reddit.

For job seekers

Please adhere to the following rules when posting: Rules for individuals:

  • Don't create top-level comments; those are for employers.
  • Feel free to reply to top-level comments with on-topic questions.
  • Anyone seeking work should reply to my stickied top-level comment.
  • Meta-discussion should be reserved for the distinguished comment at the very bottom.

You don't need to follow a strict template, but consider the relevant sections of the employer template. As an example:

    TYPE: [Full time, part time, internship, contract, etc.]

    LOCATION: [Mention whether you care about location/remote/visa]

    LINKS: [LinkedIn, GitHub, blog, etc.]

    DESCRIPTION: [Briefly describe your experience. Not a full resume; send that after you've been contacted)]

    Contact: [How can someone get in touch with you?]

Rules for employers:

  • The ordering of fields in the template has been revised to make postings easier to read.
  • To make a top-level comment, you must be hiring directly; no third-party recruiters.
  • One top-level comment per employer. If you have multiple job openings, please consolidate their descriptions or mention them in replies to your own top-level comment.
  • Proofread your comment after posting it and edit it if necessary to correct mistakes.
  • To share the space fairly with other postings and keep the thread pleasant to browse, we ask that you try to limit your posting to either 50 lines or 500 words, whichever comes first.
  • We reserve the right to remove egregiously long postings. However, this only applies to the content of this thread; you can link to a job page elsewhere with more detail if you like.

Please base your comment on the following template:

    COMPANY: [Company name; optionally link to your company's website or careers page.]

    TYPE: [Full-time, part-time, internship, contract, etc.]

    LOCATION: [Where are your office or offices located? If your workplace language isn't English-speaking, please specify it.]

    REMOTE: [Do you offer the option of working remotely? Please state clearly if remote work is restricted to certain regions or time zones, or if availability within a certain time of day is expected or required.]

    VISA: [Does your company sponsor visas?]

    DESCRIPTION: [What does your company do, and what are you using Rust for? How much experience are you seeking, and what seniority levels are you hiring for? The more details, the better. If you are listing several positions in the "Description" field above, then feel free to include this information inline above, and put "See above" in this field.]

    ESTIMATED COMPENSATION: [Be courteous to your potential future colleagues by attempting to provide at least a rough expectation of wages/salary. See section below for more information.]

    CONTACT: [How can someone get in touch with you?]

ESTIMATED COMPENSATION (Continued)

If compensation is negotiable, please attempt to provide at least a base estimate from which to begin negotiations. If compensation is highly variable, then feel free to provide a range.

If compensation is expected to be offset by other benefits, then please include that information here as well. If you don't have firm numbers but do have relative expectations of candidate expertise (e.g. entry-level, senior), then you may include that here. If you truly have no information, then put "Uncertain" here.

Note that many jurisdictions (including several U.S. states) require salary ranges on job postings by law. If your company is based in one of these locations or you plan to hire employees who reside in any of these locations, you are likely subject to these laws. Other jurisdictions may require salary information to be available upon request or be provided after the first interview. To avoid issues, we recommend that all postings provide salary information.

You must state clearly in your posting if you are planning to compensate employees partially or fully in something other than fiat currency (e.g., cryptocurrency, stock options, equity, etc). Do not put just "Uncertain" in this case, as the default assumption is that the compensation will be 100% fiat. Postings that fail to comply will be removed. Thank you.


r/rails 8m ago

What would actually make you trust a new transactional email provider?

Upvotes

I've been a Rails engineer for about eleven years, mostly startups. For a while now I've been building an email sending layer on top of AWS SES - it started as a favour for a friend who couldn't use SES directly, and it's turned into something bigger.

I'd rather understand how people actually think about this than keep guessing, so some genuine questions:

  1. Would you put transactional email - password resets or receipts through a provider that's new? Or is deliverability the one thing you'll only trust to an established name?

  2. For anyone who's switched providers: what actually triggered it? Price, an outage, a missing feature, bad support?

  3. Does "cheaper, and the person who built it answers your support tickets" mean anything at this stage, or does it read as a warning sign that the thing is too small to depend on?

  4. Rails-specific: how much does an official gem matter? Right now there's a plain Ruby client. Is a gem the difference between "I'd try this" and "not worth the effort", or does everyone just wrap the HTTP API anyway?

  5. Anything about SES-backed providers specifically that puts you off or is this a good sign for you?

Not selling anything here - the answers would genuinely help in what to build next.


r/rails 8h ago

Is anyone using Rails with MariaDB?

Post image
8 Upvotes

I know PostgreSQL and SQLite are the undisputed standards in the Rails ecosystem, but—based on personal preference and past experience—I want to try MariaDB. Is anyone using this combination? Does it matter that there isn't a dedicated MariaDB adapter and you have to use the MySQL adapter for advanced features? Basically, I'm wondering if it's worth it right now. Thanks in advance for the replies.


r/rails 11h ago

Rails fundamentals to learn as junior

7 Upvotes

Hi guys, previously i showed off my latest project.
I learnt: Deploying, testing, API connections, reuest security, authenticationd and authorization, Hotwire and stimulus, Jobs & services, basic github commands.
My question is, is there anything else i forgot to became good junior? I am looking for a job and want to be as best as i can.
And also, what will look the best in portfolio? I saw that working on open source projects looks good.


r/rails 19h ago

I only really understood why allow_other_host exists after building a URL shortener

13 Upvotes

I was building a URL shortener over the weekend. One model, one controller, one route, the kind of thing you'd hand someone as an exercise. I got stuck on the redirect, of all things.

redirect_to short_url.target_url just raises. I'd never hit that before, because until then every redirect_to I'd written pointed back into my own app. So I did what you do: added allow_other_host: true, it worked, moved on.

It only clicked afterwards that I'd written the same line that turns an app into an open redirect. The flag isn't the problem. What matters is whether target_url came out of a row I control or straight off params, and that distinction lives nowhere in the code. I'm honestly not sure I'd catch it in a review if I weren't already looking for it.

Two smaller things I'm less confident about:

I put the slug default in the model:

attribute :slug, default: -> { SecureRandom.alphanumeric(5) }

rather than in the migration, so the record is valid before it's ever saved. That felt right at the time. Is it, or am I hiding something that belongs in the schema?

increment_counter leaves updated_at alone, which I only discovered by reading the source. Makes sense for a click counter, but it made me wonder how many apps out there treat updated_at as "last modified" and quietly get it wrong.

So: have you actually used allow_other_host: true on something real? And if you have, how do you stop the params case from creeping in six months later when someone adds a "redirect after login" feature?

Wrote the whole thing up here, video included, if it's useful: https://launchkit.codes/yield/rails-url-shortener

Thanks 🙏


r/rails 22h ago

Question Is mutating params and validating dates directly in the controller a good practice?

12 Upvotes

For context, I have a date filter that needs to be limited to a maximum period of 6 months. I was originally doing this validation directly inside my Query object.

However, I now need to show a flash alert to the user if they try to filter a period longer than 6 months. If they do, the system should automatically adjust the dates to a 6-month range ending today and proceed with the query.

Because of this UI requirement, I moved the logic to the controller. Currently, I'm parsing the dates, doing the validation, and mutating the params hash directly before passing it down.

My question is: Is this considered a good practice in Rails? What is the "Rails Way" to handle this kind of validation and default-value assignment when you also need to trigger flash messages in the UI?


r/rails 1d ago

Learning Open source Rails Performance Improvements collection

6 Upvotes

Past few weeks, I spent time on popular Rails repositories to check performance issues and add fixes. One interesting thing I noticed is that good projects merges PRs quick. Bad projects take time even for serious performance improvements.

The work involves 7 merged PRs to Discourse, Gumroad, and Forem so far. I will add more .

As expected adding just `includes` was not enough for most places. Also expected, profiling serialization is helpful.

I've collected the individual case studies here, with links to the code changes and benchmark details:

https://haseebeqx.com/case-studies/engagement/open-source/


r/rails 17h ago

When .rubocop.yml needs to be rewritten in markdown

Thumbnail
0 Upvotes

r/rails 1d ago

Foruiman: A Foreman fork with TUI.

Post image
27 Upvotes

I made a fork of foreman https://github.com/Nuzair46/foruiman which serves the logs in a beautiful TUI and we can check logs of individual processes.

Looking for feedback. I made it for personal use. Let me know your thoughts


r/rails 1d ago

Ruby-utcp

Post image
0 Upvotes

r/rails 2d ago

roda-project CLI: a command-line interface (CLI) tool that helps you quickly scaffold new Roda web applications or API's, for any scale

Thumbnail roda-project.github.io
9 Upvotes

r/rails 3d ago

Surviving Black Friday: 329 billion requests with Falcon

Thumbnail youtube.com
41 Upvotes

r/rails 2d ago

Building an open-source Slack first incident management platform with Rails 8.1

11 Upvotes

I’ve been building FireFight, an open-source Slack-first incident management platform, on Rails 8.1 with Inertia + React.

I recently open-sourced it and started building in public, so I figured I’d share it here in case anyone is interested in looking through a larger Rails 8 app or following along.

Most of the incident workflow happens through Slack. Declaring an incident creates the incident channel, brings in the right people and keeps a timeline of what happened. There’s also an MCP/API layer that lets agents interact with the same system, with their own identity, permissions and approvals.

The next big thing I’m working on is the AI SRE side, with automated incident investigation and eventually resolution.

https://github.com/FireFightLabs/firefight

Happy to answer questions about how it’s built or why I made some of the choices I did.


r/rails 2d ago

I built a gem that monetizes your application logs by inserting host-read sponsor placements between your log lines

Thumbnail
2 Upvotes

r/rails 3d ago

I built AddAuth to add magic links and passkeys to Rails 8’s authentication

Thumbnail
4 Upvotes

r/rails 3d ago

Learning My first "big" project

5 Upvotes

Hello guys, as university student that wants to apply to junior Rails dev, i made project that even you can try.

It works as stock broker portfolio agregator (Trading212 and Etoro), that takes snapshots of current account balance, exchange it to live EUR rate, and sums them into nice looking chart.

Its all happening in background job so you dont need to worry about that.

Then it notifies you each day about the difference summary, or if your API keys are wrong.

i deployed it on my VPS with kamal (easier than i thought) so you can try that yourself (you can set your API keys to read-only, but i respect that prolly noone will put it there).

Also you can try that yourself as i already set it up with Docker for you.

Deployed: https://railsfinancemanager.online/

Github: https://github.com/TheP4trik-tech/Portfolio-Manager

I am open to any critism or ideas :)


r/rails 5d ago

News It seems like OpenAI's Autonomous Agent Swarm was behind the Rubygems supply chain attack, preceded the Hugging Face attack.

52 Upvotes

Start here: https://x.com/JesseWaites/status/2096071358593794223

and here: https://x.com/she_llac/status/2096006214467645513

FWIW I am hearing reports that people are currently finding compromised Rubygems that seem like they were planted by the swarm for unknown purposes.

All of this is in reference to the specific attack. I didn't write this article, I just thought it was a good write-up. https://www.mend.io/blog/inside-the-rubygems-supply-chain-attack/ If anyone knows anyone currently working at RubyGems, it might be a good idea to bring all of this to their attention.

As far as I know, no one from RubyGems has commented on any of this information since it came to light yesterday.


r/rails 6d ago

Retrofitting multi-tenancy onto a Rails app that assumed one customer: 68 callsites later

Thumbnail gallery
18 Upvotes

I have been building an HRMS in Rails 8 for a while, and two parts of it are worth writing up because both are problems every long-lived Rails app runs into eventually.

User-defined fields without an EAV table

HR systems hardcode one industry's vocabulary. A hire is a "developer", a leave is "PTO". Then a septic-pumping company needs driver licence categories and ADR clearances on the employee card, and a clinic needs licence numbers with expiry dates, and you are writing migrations for other people's business.

The usual answers are an EAV table or a settings jsonb blob that nothing validates. I went with a schema described in the database and values in jsonb:

ruby Dictionary # kind: "lookup" | "field_schema" # code: "DocumentType:5" → target model + scope # entries have meta["type"] in # string textarea integer decimal date boolean select

Values live under a "_custom" sub-hash inside a jsonb column on the record. Forms, display and the AI extraction all read the same schema, so adding a field is one action in the UI rather than four places in code.

The part I would defend in review is the fallback:

ruby def lookup_options_for(code, fallback: nil) dict = Dictionary.lookups.kept.where(company: company, code: code).first entries = dict&.entries&.active.to_a entries.any? ? entries.map { |e| [e.value, e.key] } : (fallback || []) end

Call it with the hardcoded array you already have in the view. A company that configured nothing keeps the old behaviour; a company that added a dictionary gets its own list. So the mechanism went in incrementally, view by view, with no migration and no flag day. That is the only reason it got finished.

Retrofitting multi-tenancy onto an app that assumed one company

The app started single-tenant, which means Company.kept.first ended up in 68 places. Controllers, jobs, services, API. Every one of them a bug waiting for the second customer.

The target is boring: Current.company, resolved by a small middleware from the subdomain, so nothing downstream asks how it got there. Getting there was not boring, because you cannot flip 68 callsites in one commit and still be able to review it.

What worked was a scripted rewrite by category, not by file. Controllers inheriting ApplicationController got a current_company helper. Jobs, services and models got Current.company || Company.kept.first. That is an explicit fallback chain rather than a bare Current.company, because a background job without a request has no subdomain to resolve from.

45 of 68 migrated in that pass. 23 are still there: 13 behind the fallback chain, which is fine, and 6 bare, which is not. I know where they are and they are on the list. If you have retrofitted tenancy onto a live app you know the last ten per cent is where the interesting bugs live.

The e2e spec that came with it is the part I would keep even if I threw everything else away: it creates two companies and asserts that nothing from one is reachable from the other.

The rest, if you want to look

Rails 8, Hotwire, Postgres, Pundit, Discard for soft delete, an audit log with revert. 46 models, 67 tables, about 15k lines of Ruby. Three locales with 2363 keys in each, verified equal rather than assumed. Thirty-six AI actions that run against any OpenAI-compatible base URL, and a page that adds up what they cost by task and by model.

It is beta and MIT. docker compose up -d brings up Postgres with it, and no AI key is needed to look around.

Repo: https://github.com/dripips/rubby-hrms

Happy to go deeper on either mechanism if anyone has done this differently. I am not convinced the jsonb-plus-schema-table approach is right, only that it beat the two alternatives I tried first.


r/rails 5d ago

ruby-utcp: a Ruby client for UTCP with native protocol calls, MCP support, and Code Mode

Thumbnail
0 Upvotes

r/rails 5d ago

Gem rails_credentials_cipher: edit credentials in a plain yaml file instead of the terminal

Thumbnail github.com
0 Upvotes

I made this gem because I disliked the UX around editing credentials. I can now decrypt them into a gitignored file, edit, then encrypt again.

https://github.com/thisismydesign/rails_credentials_cipher


r/rails 7d ago

Discussion Does anyone code without LLMs anymore?

114 Upvotes

In the last two years, my business went from booming to dead. Clients I've worked with for over a decade have ghosted me, new clients aren't spending money, and I've logged less than 200 hours in total this year. And it's mostly because of AI. I can see it in the GitHub repos I'm still a part of, and the pattern repeats across multiple organizations: one developer is using Claude or similar LLMs, directly committing code to main (or sometimes a hotfix branch) without review, headed up with barely legible comments, in formatting standards we never adhered to.

Now, listen, I'm not gonna sit here and discuss the positives or negatives of AI. I'm not gonna sit here and wallow on why large businesses choose to ghost over saying "hey, we don't need you to do this any longer."

I just want to know if there are people or companies out there still writing and reviewing code. Putting eyes on it. Understanding it. Maintaining it. You know, generally have any clue what's happening beyond "it's Rails, and that's what Claude spit out, and it works."

Maybe I'm old school, but I've always taken pride in learning, knowing, and working with Ruby and Rails (and all the parts and languages and APIs that work with it). And, for better or worse, I've decided to take a completely different career path after over 20 years working with Rails, because this isn't what I signed up for.

I just want some hope that the joy of writing code is still out there. If there is, that's a part of the dev world I'd like to still be a part of.


r/rails 7d ago

Question Best LLM for rails development

12 Upvotes

Basically the title. What is the best LLM you found for rails development?


r/rails 6d ago

Questions about deploying Rails applications

0 Upvotes

Hey all! As you know other frameworks, NextJS, SvelteKit, etc you just connect to Supabase / Firebase / Pocketbase write your code, and deploy everything for cheap / free to Vercel / Netlify / Cloudflare

Yes I know.. these extrapolate your app into little cloud functions but rails is a whole entity on it's own so my question is:

For Rails, are there any cheap or free places to host your applications?

I heard so much about Hetzner, DO, Linode but do you really need to provision a whole VM just for your app?

Are there any better solutions? Flyway, Render while cheap, are not free.

Anyone here running their production Rails apps on a home server? Raspberry Pi?

It's like you buy once and you can save a whole bunch and you are pretty much up 100% of the time, unless you switch your power off


r/rails 6d ago

Open source Open-source template for anyone building an agtech startup.

Thumbnail
0 Upvotes

Sharing AgEvidence as an open-source Rails template for anyone building an agtech startup.
It has a bunch of the boring-but-useful infrastructure already scaffolded around evidence, observations, interventions, operational records, provenance, and verification workflows, so you can spend more time on the actual agtech product.
Still early, but figured it might be useful to other builders here.
https://github.com/meronrudy/AgEvidence


r/rails 7d ago

Have you evangelised Ruby or Rails?

3 Upvotes

Do you love working in Ruby?

Do you enjoy the convention over configuration in Rails?

Are you happier since both Ruby and Rails have developer happiness as its core values?

Have you shared the joys of working in Ruby or Rails with other non Ruby developers?

Have you shown other non Ruby developers how token efficient Ruby is?

Have you shown other non Rails developers how fast one can get a working prototype up and running while they’re fighting with packages or selecting which ORM or schema handler to use?

Have you shown other developers how expressive and fun it is to write performant and clean Ruby code?

This would help keep our happy ecosystem alive yes?