我试图创建一个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
LetterMailer代码:
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
LetterPdf代码:
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是一个Devise方法)
正如我所说,在网页上运行应用程序,一切正常。但在Rake任务中我收到以下错误:
rake aborted!
undefined local variable or method `view_context' for main:Object
有关如何将view_context传递给Rake Task的任何想法,或者,如果有另一种更智能的方法来呈现PDF,使用视图和控制器帮助方法,而不必发送view_context?
谢谢!