我正在尝试创建一个 rake 任务来向某些用户发送电子邮件(用于 cron 作业)。
在应用程序中,所有功能都可以正常工作,但在 rake 任务中,我无法将 view_context 发送到 Prawn 对象以呈现 PDF。我在 Prawn 中使用 view_context 来获取用户名和助手类。
遵循代码:
耙任务:
task :view_missing_emails => :environment do
User.all.each do |user|
LetterMailer.attached_pdf(user.email, view_context).deliver
end
信函代码:
class LetterMailer < ActionMailer::Base
default from: "test@example.com"
def attached_pdf(email, view)
@email = email
@view = view
attachments["Letter.pdf"] = LetterPdf.new(@email, @view).render
end
end
字母PDF代码:
class LetterPdf < Prawn::Document
def initialize(email, view)
@email = email
@view = view
if @view.current_user.user_permission.admin?
text "You are an admin"
else
text "You are NOT an admin"
end
text "Your email is: #{@email}"
end
(current_user 是一个设计方法)
正如我所说,在网页上运行应用程序,一切正常。但在 Rake 任务中,我收到以下错误:
rake aborted!
undefined local variable or method `view_context' for main:Object
关于如何将 view_context 传递给 Rake 任务的任何想法,或者,如果有另一种更智能的方式来呈现 PDF,使用视图和控制器辅助方法,而无需发送 view_context?
谢谢!