2013-08-08 10 views
10

私はアセットパイプラインのファイル.png.rbを見つけ出し、アプリケーションでさまざまなページのpngスクリーンショットを生成するためにRails用のスプロケットプリプロセッサを作成しようとしています。カスタムスプロケットプロセッサの作成に関するドキュメント?

私はこのトピックをかなり読んだことがありますが、この設定をどうやって行うかについての簡単な文書は見つかりませんでした。助けてください?ここで

は、私がこれまで持っているものです。


/initializers/sprockets.rb

require 'screenshot_preprocessor' 

Rails.application.assets.register_mime_type('screenshot/png', '.png.rb') 
Rails.application.assets.register_preprocessor('screenshot/png', ScreenshotPreprocessor) 

/lib/screenshot_preprocessor.rb:

class ScreenshotPreprocessor 
    # What API do I need to provide here? 
    # - What methods do I need to provide? 
    # - What parameters does Sprockets pass me? 
    # - What do I need to return to Sprockets? 
end 
+0

注:GitHubでこれについて[問題](https://github.com/sstephenson/sprockets/issues/462)も開いています。 – Ajedi32

答えて

7

さて、私はまだドキュメントを見つけることがどこか分かりませんこれに。


/initializers/sprockets.rb

しかし、てこデバッガで遊んで、スプロケットのソースコードを読んで、そしてスプロケットと同様のことを行っている人からブログの記事を読んで、私はこれを思い付くことができました
require 'screenshot_generator' 

Rails.application.assets.register_engine('.screenshot', ScreenshotGenerator) 

/lib/screenshot_generator.rb:

require_relative 'capybara_screenshot' # Don't worry about this, it's not 
             # relevant to this question. 

class ScreenshotGenerator < Sprockets::Processor 
    def evaluate(context, locals) 
    generator_class = ScreenshotGenerator.get_generator_class(context.pathname) 

    return generator_class.new.generate 
    end 

    private 

    def self.get_generator_class(generator_file) 
    # This evaluates the Ruby code in the given file and returns a class that 
    # can generate a binary string containing an image file. 
    # (Code omitted for brevity) 
    end 
end 

これは今はうまく動作しますが、Sprocketsプリプロセッサ、ポストプロセッサ、エンジンがどのように機能するかについての実際のドキュメントを実際に見ることをお勧めします。誰かがそのようなドキュメンテーションを見つけたら、答えを投稿してください。

関連する問題