【问题标题】:Documentation for creating custom Sprockets processors?创建自定义 Sprockets 处理器的文档?
【发布时间】:2013-08-09 23:51:56
【问题描述】:

我正在尝试为 Rails 创建一个 sprockets 预处理器,它在资产管道中找到 .png.rb 文件,并使用它们在我的应用程序中生成各个页面的 png 屏幕截图。

我已经阅读了很多关于这个主题的内容,但我似乎找不到任何关于如何进行设置的简单文档。请帮忙?

这是我目前所拥有的:


/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

【问题讨论】:

  • 注意:我也在 GitHub 上打开了an issue 讨论这个问题。

标签: ruby-on-rails ruby-on-rails-3 sprockets tilt


【解决方案1】:

好的,我仍然不确定在哪里可以找到这方面的文档。但是,通过阅读 Sprockets 的源代码、使用 pry 调试器以及阅读使用 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'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 预处理器、后处理器和引擎如何工作的真实文档。如果有人找到任何此类文档,请发布答案。

【讨论】:

  • 我知道这是一个老问题/答案,但由于我目前正在研究 Sprockets 后处理器,因此我使用 guide on extending Sprockets 作为起点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多