支付用户命令后,我想发送确认电子邮件(如果有帮助,我正在使用Mandrill)。这些确认之一涉及当用户购买别人的礼品卡时的礼品卡。
我想在此电子邮件中附上礼品卡(pdf格式)。
这是我邮件中的相应代码:
def confirmation_cmd_gift_card(commande)
@commande = commande
@gift_card = GiftCard.find_by(commande_id: commande.id)
mail(to: @commande.user.email, subject: " Un grand merci pour votre commande !") do |format|
format.html
format.text
format.pdf do
attachments["carte_cadeau_pennarbox.pdf"] = WickedPdf.new.pdf_from_string(
render_to_string(
pdf: 'carte_cadeau_pennarbox',
encoding: 'UTF-8',
template: 'order_notifier/carte_cadeau_pennarbox.pdf.erb',
layout: 'cc_pdf.html',
disposition: 'attachment'
)
)
end
end
end
后台作业(Sidekiq)执行发送电子邮件的任务(适用于其他类型的电子邮件)。
当作业执行礼品卡电子邮件发送时,我的Rails服务器似乎停止了。这是日志:
Rendered order_notifier/carte_cadeau_pennarbox.pdf.erb within layouts/cc_pdf.html (19.2ms)
"***************[\"/Users/JUSTINE/.rvm/gems/ruby-2.3.0/bin/wkhtmltopdf\", \"-q\", \"file:////var/folders/2k/r8df_vt57qbcj2s3w5p4nty40000gn/T/wicked_pdf20180626-47763-v7znb.html\", \"/var/folders/2k/r8df_vt57qbcj2s3w5p4nty40000gn/T/wicked_pdf_generated_file20180626-47763-1pmlnk.pdf\"]***************"
它看起来不像是一个错误...正在发生某些事情,并且正在破坏我的Rails服务器,但我不知道为什么。
您有什么建议吗?
答案 0 :(得分:1)
在使用wicked_pdf时,rails server
挂起之前,我也遇到过类似的问题。
这是因为默认情况下,rails服务器是单线程的。
事件的顺序是(我认为):
当然,在这一切发生时,您的应用也无响应,因为来自浏览器的所有请求都加入了队列。
在这种情况下,我可以使用它的方法是在本地使用puma并确保它具有多个线程来处理传入的请求。