Wicked PDF save_to_file不会在heroku生产实例

时间:2016-07-31 22:05:06

标签: ruby-on-rails heroku wicked-pdf

我有一个Ruby on Rails应用程序,它生成PDF并将它们保存到/ pdf / ..然后运行延迟的作业将pdf通过电子邮件发送给某人。制作在Heroku上进行。

该过程在本地运行良好,并且过去曾在(相同)生产环境中工作。但是,文件现在没有生成/保存在生产环境中,我无法解决原因。尽管回过头所有的旧提交,但我看不出我改变了什么来阻止文件生成。

文件夹/ p​​df存在于应用程序的根目录中。我已确认使用Heroku Bash。

我认为问题出在save_to_file:instruction。

附近

延迟的作业工作正常,如果我将附件指向已经存在的文件,它将执行并发送电子邮件。

我知道heroku的文件系统不会保留资产。然而,由于我不希望资产持续存在,我不相信这是一个问题(我可能是错的),我只想生成然后使用并丢弃。

我的路线:

  get '/matrices/:matrix_id/submissions/:id/email' => 'submissions#emailpdf', as: :submissions_emailpdf

我的控制器:

def emailpdf
  get_submission_details
  get_topline_stats
  get_brand
  render  javascript_delay: 2000,
        pdf:       'submission',
        layout:    'pdf', 
        template:  'submissions/showpdf.html.haml',
        show_as_html: params.key?('debug'),
        save_to_file: Rails.root.join('pdf', "submission#{@user.id}.pdf"),
        save_only: true
  SendpdfJob.delay.perform_later(@user.name, @user.id, @user.email, @matrix.id, @submission.id)
  redirect_to matrix_submission_path(@matrix,@submission), notice: "We have emailed you your PDF"
end

我推迟的工作

 class SendpdfJob < ActiveJob::Base
  queue_as :default
  def perform(username, userid, useremail, matrixid, submissionid)
    Pony.delay.mail(
      :to => useremail, 
      :from => 'info@digitalmaturity.co.uk', 
      :subject => 'Your Matrix', 
      :html_body => '<h2>Hello '+ username+'.</h2>
        <p> Your Maturity Matrix is attached. We hope you find this useful.
        <p >All the best 
      :attachments => {
        "matrix.pdf" => File.read("pdf/submission#{userid}.pdf")
      }
    );
  end
end

我的日志错误:

Job SendpdfJob.perform_later (id=45) FAILED (8 prior attempts) with Errno::ENOENT: No such file or directory @ rb_sysopen - pdf/submission26.pdf

Heroku bash确认/ pdf

中没有文件

非常感谢所有人。

TB

0 个答案:

没有答案