Ruby on rails 获得';使用MyMailer.delay.mailer_操作(args)延迟电子邮件的发送;错误
我收到一个奇怪的错误:“使用MyMailer.delay.mailer_操作(args)延迟发送电子邮件。”但我似乎可以找到它的来源:Ruby on rails 获得';使用MyMailer.delay.mailer_操作(args)延迟电子邮件的发送;错误,ruby-on-rails,actionmailer,delayed-job,Ruby On Rails,Actionmailer,Delayed Job,我收到一个奇怪的错误:“使用MyMailer.delay.mailer_操作(args)延迟发送电子邮件。”但我似乎可以找到它的来源: app/mailers/user\u notifier.rb class UserNotifier < ActionMailer::Base default from: "test@testing.com" def signup_email(user) @user = user mail(to: @user.email, subj
app/mailers/user\u notifier.rb
class UserNotifier < ActionMailer::Base
default from: "test@testing.com"
def signup_email(user)
@user = user
mail(to: @user.email, subject: t("mailer.signup.subject"))
end
...
end
它以前能用,但以前有时坏了。我还是不明白。任何想法都将不胜感激!谢谢。我想你把它倒过来了:
UserNotifier.signup_email(user).delay.deliver
应该是
UserNotifier.delay.signup_email(user)
我想你把它倒过来了:
UserNotifier.signup_email(user).delay.deliver
应该是
UserNotifier.delay.signup_email(user)
当您使用Delayed_作业时,您可以访问
.dealy
方法,然后您可以使用action mailer方法,如.deliver\u later
延迟发送电子邮件
在项目中添加延迟作业的简单方法:
gem“延迟的作业活动记录”
gem“守护进程”
$bin/rails生成延迟作业:活动记录
$bin/rake db:migrate
$bundle
$bin/delayed_作业启动
tail-f log/delayed_job.log
sometailer.delay.somethod
Delayed::Worker.sleep\u delay=60
以立即处理
否则,您可以将应用程序配置为使用延迟作业,就像活动作业和进程在后台工作的适配器一样。然后需要将config.active\u job.queue\u adapter=:delayed\u job
。此模式通常用于发送不需要使用的电子邮件。延迟,而是调用mailer操作和。稍后交付,例如:MyMailer.your\u方法。稍后交付。在此模式下,活动作业将电子邮件排入延迟作业队列
欢迎提出问题和建议
参考资料:当您使用延迟作业时,您可以访问.dealy
方法,然后您可以使用类似.deliver的操作邮件发送方法延迟电子邮件的发送
在项目中添加延迟作业的简单方法:
在您的文件中添加:
gem“延迟的作业活动记录”
gem“守护进程”
使用以下命令创建文件“config/initializers/delayed_job_config.rb”:
在终端:
$bin/rails生成延迟作业:活动记录
$bin/rake db:migrate
$bundle
$bin/delayed_作业启动
可选择查看日志:tail-f log/delayed_job.log
在项目中的某些邮件程序中(您可以在rails控制台中执行此操作):
sometailer.delay.somethod
您的队列将在60秒内处理。您可以删除属性Delayed::Worker.sleep\u delay=60
以立即处理
否则,您可以将应用程序配置为使用延迟作业,就像活动作业和进程在后台工作的适配器一样。然后需要将config.active\u job.queue\u adapter=:delayed\u job
。此模式通常用于发送不需要使用的电子邮件。延迟,而是调用mailer操作和。稍后交付,例如:MyMailer.your\u方法。稍后交付。在此模式下,活动作业将电子邮件排入延迟作业队列
欢迎提出问题和建议
参考资料:谢谢@jeremy.clark。所以我不需要打电话给deliver
?我需要交付,因为我正在尝试获取电子邮件对象,将css注入其主体,然后交付。您应该阅读延迟的工作,它正在处理您场景中的繁重工作()。我帮助纠正的线路基本上安排了延迟的工作。您需要确保延迟的作业正在运行和处理作业。您可以使用rake jobs:work
强制处理作业。基本上,延迟作业将在作业拿起并执行后为您执行.deliver
方法。谢谢@jeremy.clark。所以我不需要打电话给deliver
?我需要交付,因为我正在尝试获取电子邮件对象,将css注入其主体,然后交付。您应该阅读延迟的工作,它正在处理您场景中的繁重工作()。我帮助纠正的线路基本上安排了延迟的工作。您需要确保延迟的作业正在运行和处理作业。您可以使用rake jobs:work
强制处理作业。基本上,延迟作业将在拾取并执行作业后为您执行.deliver
方法。