只是想知道在我的 Rails 应用程序中构建异步邮件的最佳方法是什么(使用 Sidekiq)?我有一个带有多种方法/电子邮件的 ActionMailer 类...
通知者.rb:
class Notifier < ActionMailer::Base
default from: "\"Company Name\" <notify@domain.com>"
default_url_options[:host] = Rails.env.production? ? 'domain.com' : 'localhost:5000'
def welcome_email(user)
@user = user
mail to: @user.email, subject: "Thanks for signing up!"
end
...
def password_reset(user)
@user = user
@edit_password_reset_url = edit_password_reset_url(user.perishable_token)
mail to: @user.email, subject: "Password Reset"
end
end
然后,例如,password_reset 邮件User
通过执行在我的模型中发送...
用户.rb:
def deliver_password_reset_instructions!
reset_perishable_token!
NotifierWorker.perform_async(self)
end
notifier_worker.rb:
class NotifierWorker
include Sidekiq::Worker
sidekiq_options queue: "mail"
def perform(user)
Notifier.password_reset(user).deliver
end
end
所以我想我在这里想知道几件事......
- 是否可以在一个工作人员中定义许多“执行”操作?通过这样做,我可以让事情变得简单(一个通知者/邮件工作者),并通过它发送许多不同的电子邮件。或者我应该创建许多工人?每个邮件程序一个(例如 WelcomeEmailWorker、PasswordResetWorker 等),只需将它们全部分配给 Sidekiq 使用相同的“邮件”队列。
- 我知道它可以按原样工作,但是我应该将这些邮件方法(welcome_email、password_reset 等)中的每一个分解为单独的邮件程序类,还是可以将它们全部放在一个类中
Notifier
?
非常感谢这里的任何建议。谢谢!