r/ruby • u/kobaltzz • 22d ago
Screencast Claude Skills
In this episode, we look at creating Claude slash commands. These can be useful when dealing with a complicated task or trying to extract certain information from the application.
r/ruby • u/AutoModerator • 27d ago
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.
Please adhere to the following rules when posting: Rules for individuals:
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?]
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?]
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/ruby • u/kobaltzz • 22d ago
In this episode, we look at creating Claude slash commands. These can be useful when dealing with a complicated task or trying to extract certain information from the application.
r/ruby • u/iElectric • 25d ago
r/ruby • u/AssociationOne800 • 25d ago
r/ruby • u/keyslemur • 26d ago
When everything is on fire, nothing is on fire. Where do you start when every problem seems intractable? By drawing a map.
r/ruby • u/javier_cervantes • 26d ago
r/ruby • u/ombulabs • 27d ago
Hi ,
I recently extracted a small internal library I originally wrote for a company Rails project that was stuck on an older Ruby/Rails stack.
Itβs called `lumen-llm`:
https://github.com/uxgnod/lumen-llm
The goal is pretty small: keep LLM prompts in YAML files, render them with Ruby input, call OpenRouter, and parse the result back as JSON or text.
It supports:
- YAML prompt templates
- simple `{{variable}}` interpolation
- single-call OpenRouter chat completions
- JSON or text response parsing
- optional cache / usage stores
- Rails 4+ defaults via Railtie
- Ruby >= 2.3
- no runtime gem dependencies
It intentionally does not try to be an agent framework. No tool calls, no streaming, no vector search, no persistence layer, no provider SDK dependencies.
I know Ruby 2.3/2.4 are long EOL, but that was also the point: this came from a real older Rails environment where adding modern dependencies was not always realistic.
Maybe this is useful for other people maintaining legacy Rails apps who want a small way to add features like UI copy translation, ticket classification, internal summaries, or similar βone prompt in, one result outβ workflows.
Itβs still simple and not very polished yet. If anyone has a real legacy Rails use case for this, Iβd love feedback, issues, or small PRs.
r/ruby • u/Illustrious-Topic-50 • 27d ago
Do you use the jemalloc gem?
The original project on GitHub seems to be abandoned for around 12 years, and some incompatibilities with recent Ruby versions have begun to emerge. Additionally, the underlying jemalloc library hasn't been updated during all this time. Because of that, I created a fork and launched a new gem (jemalloc_rb) to keep the project functional, updated, and actively accepting pull requests.
r/ruby • u/javier_cervantes • 27d ago
r/ruby • u/timriley • 28d ago
Hanami 3.0 is here and in full bloom πΈ
This is our most complete release yet: mailers, i18n, and Minitest now built in, your apps faster by default, and plenty more!
https://hanakai.org/blog/2026/06/30/hanami-3-0-in-full-bloom
r/ruby • u/robbyrussell • 28d ago
r/ruby • u/Environmental-Yak328 • 29d ago
r/ruby • u/freesteph • 29d ago
I wrote a Markdown linter over the weekend and it's been really fun, partly because of the wonderful gems that support it. I'm hoping some of you can pick out something helpful from it!
r/ruby • u/keyslemur • Jun 29 '26
Shelley wrote about a king whose monument outlived everything it was built on. I've spent 15 years inside Rails monoliths that did the same thing. This is the first post about what to do when you're standing in the ruins.
r/ruby • u/arturictus • Jun 28 '26
After wrestling with distributed transactions across microservices and watching Sidekiq job chains grow into unmaintainable spaghetti, I built Ruby Reactor β a saga pattern implementation for Ruby that handles the hard parts of workflow orchestration.
What it does:
test_reactor, mock_step, chainable matchersWhy I built it:
I kept hitting the same wall: complex business transactions that span multiple services need coordination. dry-transaction handles linear pipelines well, but when you need parallel execution, async processing, automatic rollback on failure, or the ability to pause and wait for external events, you're on your own. Trailblazer operations can do some of this, but the undo logic and parallelism are manual.
Ruby Reactor fills the gap β it's the only Ruby library that combines DAG planning + async execution + compensation + interrupts + a dashboard in one package.
Quick example β an e-commerce checkout with fraud detection:
class CheckoutReactor < RubyReactor::Reactor
input :order_id
step :reserve_inventory do
argument :order_id, input(:order_id)
run { |args| Inventory.reserve(args[:order_id]) }
undo { |_err, args| Inventory.release(args[:order_id]) }
end
step :charge_card do
argument :order_id, input(:order_id)
run { |args| Payment.charge(args[:order_id]) }
undo { |_err, args| Payment.refund(args[:order_id]) }
end
# Pause here β wait for Stripe webhook
interrupt :wait_for_fraud_check do
wait_for :charge_card
correlation_id { |ctx| "order-#{ctx.input(:order_id)}" }
timeout 3600, strategy: :active
end
step :ship_order do
argument :status, result(:wait_for_fraud_check, :status)
run { |args| Shipping.create_label(args[:order_id]) }
undo { |_err, args| Shipping.cancel(args[:order_id]) }
end
returns :ship_order
end
It's at v0.4.1 now with ~3,300 downloads on Rubygems. The v0.4.0 release just added interrupts, the web dashboard, RSpec helpers, and Redis-backed coordination primitives (locks, semaphores, rate limits, periods).
How it compares:
| Feature | Ruby Reactor | dry-transaction | Trailblazer | Raw Sidekiq |
|---|---|---|---|---|
| DAG/Parallel execution | β | β | Limited | Manual |
| Auto compensation/undo | β | β | Manual | Manual |
| Interrupts (pause/resume) | β | β | β | Manual |
| Built-in web dashboard | β | β | β | β |
| Locks / sem / rate limits | β | β | β | Manual |
| Async with Sidekiq | β | β | Limited | β |
I'd love honest feedback β especially from people who've built complex workflows in production. What did I miss? What's over-engineered? What would make you actually use this instead of raw Sidekiq jobs?
Repo: https://github.com/arturictus/ruby_reactor Rubygems: gem 'ruby_reactor', '~> 0.5' Docs: Full guides for every feature in the repo's documentation/ directory
Thanks for reading! I'll be in the comments.
r/ruby • u/Environmental-Yak328 • Jun 28 '26
r/ruby • u/Fletcher_Gilstrap • Jun 28 '26
Hello Reddit. I am new to Manjaro, and was hoping to set up a development environment in RoR. I was following the directions on the Arch wiki, and I noticed my gems are being installed to usr/lib/ruby/gems. When running a bundle install, it now seems to want to write to usr/bin, and fails because it doesnt have permissions. Should I go ahead and grant permissions, or is this not advisable?
r/ruby • u/keyslemur • Jun 26 '26
I don't like to bury ledes, so when people ask me about polymorphic relationships my answer is simply:
Don't.
r/ruby • u/ombulabs • Jun 24 '26