2013-08-08 12 views
10

Próbuję utworzyć preprocesor koła dla Railsów, który znajdzie pliki .png.rb w potoku zasobów i użyje ich do wygenerowania zrzutów ekranu png różnych stron w mojej aplikacji.Dokumentacja do tworzenia niestandardowych procesorów zębatek?

Czytałem na ten temat sporo, ale nie mogę znaleźć żadnej prostej dokumentacji, jak uzyskać tę konfigurację. Prosimy o pomoc?

Oto co mam do tej pory:


/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

Uwaga: Otworzyłem również [problem] (https://github.com/sstephenson/sprockets/issues/462) na ten temat na GitHub. – Ajedi32

Odpowiedz

7

Dobra, ja nadal nie jestem pewien, gdzie znaleźć dokumentacji na to. Ale, czytając kod źródłowy zębatkami, zabawy z debuggera podważyć i czytanie blogu od ludzi, którzy zrobili podobne rzeczy z zębatkami, udało mi się wymyślić to:


/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 

To działa dobrze dla mnie teraz, ale naprawdę wolałbym zobaczyć prawdziwą dokumentację na temat pracy preprocessorów, postprocesorów i silników firmy Sprockets. Jeśli ktokolwiek znajdzie taką dokumentację, opublikuj odpowiedź.