我是Rails开发的新手,我有一个问题。有以下代码:
def create
@order = current_user.orders.create!(order_params)
OrderMailer.send_order_info(@order).deliver
end
此代码创建新订单,呈现json结果并发送有关它的电子邮件。邮件发送需要一些时间,我想我应该在另一个线程或类似的东西。请给我建议我怎么做得好。谢谢!
答案 0 :(得分:0)
您应该使用延迟电子邮件发送。例如,你可以使用Sidekiq,Delayed Job或Resque来做到这一点。
您还可以延迟使用这些宝石的任何其他工作。
您应该查看文档,看看哪种文档最适合您使用。
我个人使用Sidekiq,但Delayed Job是最容易安装的,如果您只想将它用于邮件程序。
答案 1 :(得分:0)
我们使用Spawn:它现在改名为“Spawnling”
https://github.com/tra/spawnling
非常容易使用:(在控制器中)
@user = User.create(params[:user])
spawn do
@user.do_some_slow_background_stuff
end
或者,如果你想监视后台进程是否已经完成(@spawn_id是pid)
@user = User.create(params[:user])
spawner = spawn do
@user.do_some_slow_background_stuff
end
@spawn_id = spawner.handle