Rails rake任务不在生产环境中执行

时间:2015-02-02 02:47:45

标签: ruby-on-rails ubuntu pdf-generation rake wkhtmltopdf

我一直致力于Ruby on Rails项目(使用'测量员' gem的基本调查应用程序),该项目允许用户下载已完成调查结果的pdf。为了完成,我编写了一个基本的rake任务(如下所示),它调用wkhtmltopdf命令行实用程序,每隔15分钟通过/ cron将HTML / CSS转换为pdf。

这是rake任务(lib/tasks/pdf_survey_results.rake):

desc "PDF Completed Survey Results for Admin Download"

task :pdf_survey_results => :environment do

  # iterate through all the response sets
  ResponseSet.all.each do |response_set|

    if !response_set.completed_at.blank?
      puts "response set #{response_set.id} is complete, checking for pdf..."

      if response_set.pdf_url.blank?
        puts "no pdf found, now generating..."

        # make the pdf
        result = system "wkhtmltopdf #{BASE_URL}/surveys/student-questionnaire/#{response_set.access_code} /opt/deployed_rails_apps/survey_app/public/survey-pdfs/survey-#{response_set.access_code}.pdf"
        if !result.nil?
          response_set.pdf_url = "#{BASE_URL}/survey-pdfs/survey-#{response_set.access_code}.pdf"
          response_set.save
        end
      end
    end
  end
end

这在我的开发环境(OS X)中完全正常,但是当我部署到Ubuntu 14.04时,

  1. 我可以通过命令行手动创建pdf(即wkhtmltopdf http://surveyurl.com sample.pdf
  2. 我不能通过手动运行rake任务来创建pdf(即rake pdf_survey_results将通过&#34找到输出;没有找到pdf,现在正在生成......"但没有来自wkhtmltopdf工具的输出,即使我在本地OS X开发环境中运行时看到此输出)
  3. 我无法通过随时设置的cron作业创建pdf,这并不奇怪,因为手动rake任务执行无效。
  4. 我最不习惯的是,我无法弄清楚为什么rake任务在Mac OS X中没有给我wkhtmltopdf的文本输出,即使命令行实用程序本身工作正常。到目前为止,这方面使我对调试有点困难。顺便说一句,我在这个项目中使用独角兽作为应用程序服务器。

    非常感谢任何建议!如果不清楚,将回答任何相关问题。

0 个答案:

没有答案