Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 控制台电子邮件和rake电子邮件附件之间的区别_Ruby On Rails 3_Rake_Email Attachments_Rails Console - Fatal编程技术网

Ruby on rails 3 控制台电子邮件和rake电子邮件附件之间的区别

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 @

我正在通过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
  @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
  ...
我希望也许其他人能从我两天的努力中获益:-)。 干杯