A Rails engine for drip campaigns/scheduled sequences and periodical support. Works with ActionMailer, and other things.
A Rails engine for drip campaigns/scheduled sequences and periodical support. Works with ActionMailer, and other things.
Caffeinate is a drip engine for managing, creating, and performing scheduled messages sequences from your Ruby on Rails application. This was originally meant for email, but now supports anything!
Caffeinate provides a simple DSL to create scheduled sequences which can be sent by ActionMailer, or invoked by a Ruby object, without any additional configuration.
There's a cool demo app you can spin up here.
Originally, this was meant for just email, but as of V2.3 supports plain old Ruby objects just as well. Having said, the documentation primarily revolves around using ActionMailer, but it's just as easy to plug in any Ruby class. See Using Without ActionMailer below.
No! Not at all!
There's not a lot of activity here because it's stable and working! I am more than happy to entertain new features.
See https://github.com/joshmn/caffeinate-webui for an accompanying lightweight UI for simple administrative tasks and overview.
If you have anything like this is your codebase, you need Caffeinate:
class User that inherit from a magical class! Using the example above, implementing an SMS client. The same rules apply, just change `mailer_class` or `mailer` to `action_class`, and create a `Caffeinate::ActionProxy` (acts just like an `ActionMailer`). See [Without ActionMailer](docs/6-without-action-mailer.md).) for more.
## But wait, there's more
Caffeinate also...
* ✅ Works with regular Ruby methods as of V2.3
* ✅ Allows hyper-precise scheduled times. 9:19AM _in the user's timezone_? Sure! **Only on business days**? YES!
* ✅ Periodicals
* ✅ Manages unsubscribes
* ✅ Works with singular and multiple associations
* ✅ Compatible with every background processor
* ✅ Tested against large databases at AngelList and is performant as hell
* ✅ Effortlessly handles complex workflows
- Need to skip a certain mailing? You can!
## Documentation
* [Getting started, tips and tricks](https://github.com/joshmn/caffeinate/blob/master/docs/README.md)
* [Better-than-average code documentation](https://rubydoc.info/gems/caffeinate)
## Upcoming features/todo
[Handy dandy roadmap](https://github.com/joshmn/caffeinate/projects/1).
## Alternatives
Not a fan of Caffeinate? I built it because I wasn't a fan of the alternatives. To each their own:
* https://github.com/honeybadger-io/heya
* https://github.com/tarr11/dripper
* https://github.com/Sology/maily_herald
## Contributing
There's so much more that can be done with this. I'd love to see what you're thinking.
If you have general feedback, I'd love to know what you're using Caffeinate for! Please email me (any-thing [at] josh.mn) or [tweet me @joshmn](https://twitter.com/joshmn) or create an issue! I'd love to chat.
## Contributors & thanks
* Thanks to [sourdoughdev](https://github.com/sourdoughdev/caffeinate) for releasing the gem name to me. :)
* Thanks to [markokajzer](https://github.com/markokajzer) for listening to me talk about this most mornings.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).No open issues yet, or sync has not completed.