finds.dev← search

// the find

palkan/active_delivery

★ 658 · Ruby · MIT · updated Aug 2025

Ruby framework for keeping all types of notifications (mailers, push notifications, whatever) in one place

Active Delivery is a Rails notification hub that puts email, SMS, push, and any other channel behind a single call site. Instead of scattering `UserMailer.foo.deliver_later` and `PushService.notify(user, :foo)` across your codebase, you write `UserDelivery.with(user:).foo.deliver_later` and the framework routes it to whichever senders are registered. From palkan (Evil Martians), so it follows Action Mailer conventions closely.

The line abstraction is genuinely well-designed — you can add a new channel (SMS, webhooks, Action Cable, pigeons) by implementing four methods and registering it; existing delivery classes need zero changes. Callback support mirrors Action Mailer's `before_action` API, so conditional delivery logic (skip SMS if user opted out) has a clean home rather than being scattered in service objects. Test helpers are first-class: `have_delivered_to` and `deliver_via` matchers make it easy to assert which channels fired without hitting real transports. Works without Rails, which is rare for a gem this tightly modeled on Action Mailer conventions.

658 stars for a gem that's been around since at least Rails 6 suggests limited adoption — you may be on your own debugging edge cases. The `resolver_pattern` string interpolation approach for finding notifier classes is fragile; a rename or namespace change silently breaks delivery without a test covering that channel. No built-in retry or dead-letter handling — `raise_on_line_error = false` swallows failures into a Rails error reporter or a warning, which is easy to miss in production. Abstract Notifier ships with zero drivers; you must wire up your own SMS/push sender from scratch, so 'batteries included' only applies to the mailer line.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →