2011-06-29 14 views
4

バックグラウンドでResqueバックグラウンドジョブを使用してPDFドキュメントを作成しようとしています。バックグラウンドでresqueを使用してpdfを生成する

PDFを作成するための私のコードは、私は同じようResqueワーカーで使用するRailsのヘルパーメソッドである:

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' 

誰でもこの方法を知っていますか?

答えて

2

クラスメソッド(self.perform)からインスタンスメソッド(create_pdf)を呼び出そうとしています。あなたはインスタンスメソッドとして、あなたの代わりにあなたのDocumentクラスにそれを移動することを検討しても、あなたの意見にcreate_pdfにアクセスする必要がない場合は

def self.create_pdf 

:あなたのDocumentHelperは、クラスメソッドとしてcreate_pdfを定義した場合、あなたのコードは動作します、次に@doc.create_pdf(pdf)を実行することができます。

あなたが同様にあなたの意見にcreate_pdfにアクセスする必要がある場合は、あなたがあなたのDocumentHelperファイル内module_function :create_pdfを置くことができるか、あなたが動的に労働者にこれを追加することができます。

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

次に、あなたが適切にできますDocumentHelper.create_pdfに電話してください。

また、Rails 3では、include ActionView::Helpers::DocumentHelperではなく、include DocumentHelperが必要だと思います。

関連する問題