GitLabで使用されているgem devise-asyncを紹介。
これはgem deviseのプラグインで、ユーザーに対してのメール送信を非同期化出来るgemです。
ちなみに対応しているキューシステムは下記。
- Resque
- Sidekiq
- Delayed::Job
- QueueClassic
- Torquebox
実装
devise-async / lib / devise / async / worker.rb ここでworkerに対してenqueueを行ってます。
そして、 devise-async / lib / devise / async / backend / base.rb のBaseクラスのperfomeインスタンスメソッドでメールを送信している仕組みになってます。