Ответ 1
Хорошо, я все еще не уверен, где найти документацию по этому вопросу. Но, читая исходный код Sprockets, играя с отрывистым отладчиком и читая сообщения в блогах от людей, которые делали подобные вещи со Sprockets, я смог придумать следующее:
/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 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. Если кто-либо найдет такую документацию, отправьте ответ.