создание PDF с использованием креветок в фоновом режиме с помощью Resque - PullRequest
4 голосов
/ 29 июня 2011

Я пытаюсь создать PDF-документ в фоновом режиме с помощью фонового задания Resque.

Мой код для создания PDF-файла находится во вспомогательном методе Rails, который я хочу использовать в работнике Resque, например:

class DocumentCreator
  @queue = :document_creator_queue
  require "prawn"

  def self.perform(id)
    @doc = Document.find(id)

    Prawn::Document.generate('test.pdf') do |pdf|
      include ActionView::Helpers::DocumentHelper
      create_pdf(pdf)
    end
  end
end

Метод create_pdf из DocumentHelper, но я получаю эту ошибку:

undefined method `create_pdf' 

Кто-нибудь знает, как это сделать?

1 Ответ

2 голосов
/ 29 июня 2011

Вы пытаетесь вызвать метод экземпляра (create_pdf) из метода класса (self.perform).Ваш код будет работать только в том случае, если ваш DocumentHelper определил create_pdf как метод класса:

def self.create_pdf

Если вам не нужен доступ к create_pdf в ваших представлениях, вы можете рассмотреть возможность его перемещения в свойВместо этого Document class, как метод экземпляра, и тогда вы можете сделать @doc.create_pdf(pdf).

Однако, если вам также необходим доступ к create_pdf в ваших представлениях, вы можете либо поместить module_function :create_pdf в свой файл DocumentHelper, либо динамически добавить его на своем рабочем месте:

DocumentHelper.module_eval do
  module_function(:create_pdf)
end
DocumentHelper.create_pdf(pdf)

Тогда вы можете правильно позвонить DocumentHelper.create_pdf.

Кроме того, в Rails 3, я думаю, вам нужен только include DocumentHelper, а не include ActionView::Helpers::DocumentHelper.

...