Ruby on rails 3 控制台电子邮件和rake电子邮件附件之间的区别
我正在通过wicket_pdf生成一个发票pdf,这很有效。此pdf将在稍后的处理步骤中作为电子邮件附件使用Ruby on rails 3 控制台电子邮件和rake电子邮件附件之间的区别,ruby-on-rails-3,rake,email-attachments,rails-console,Ruby On Rails 3,Rake,Email Attachments,Rails Console,我正在通过wicket_pdf生成一个发票pdf,这很有效。此pdf将在稍后的处理步骤中作为电子邮件附件使用 # user.rb def send_last_invoice_email!(invoice) UserMailer.send_actual_invoice_email(self, invoice).deliver end # user_mailer.rb def send_actual_invoice_email(user, invoice) @user = user @
# user.rb
def send_last_invoice_email!(invoice)
UserMailer.send_actual_invoice_email(self, invoice).deliver
end
# user_mailer.rb
def send_actual_invoice_email(user, invoice)
@user = user
@invoice = invoice
to = @user.email
# THIS IS THE PROBLEMATIC LINE
attachments["#{@invoice.file_name}"] = File.read(@invoice.file_name_path)
mail(:to => to)
end
# console => works
user = User.where("step_id = 1 AND status = 0").last
invoice = user.invoices.last
user.send_last_invoice_email!(invoice)
# rake task => doesn't work
desc "send email for first user for step_id => 1 testing purpose"
task :send_mail => :environment do
user = User.where("step_id = 1 AND status = 0").last
invoice = user.invoices.last
user.send_last_invoice_email!(invoice)
end
当我调用RAKE任务时,pdf是空的。我已经调试过了,文件名已经存在,原始pdf文件还可以,但只有电子邮件中附加的pdf是空的
我在开发模式中使用letter_opener(1.0.0)
有人知道为什么控制台和通过rake任务执行相同的代码之间有区别吗?如何调试这种差异?发现了问题。这真的很奇怪。我在十六进制编辑器中比较两个PDF时找到了解决方案 在rake中,我必须将ruby标准编码设置为utf-8
# users.rake
namespace :users do
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
...
我希望也许其他人能从我两天的努力中获益:-)。
干杯