有关创建自定义Sprockets处理器的文档?
我正在尝试为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
好的,我仍然不确定在哪里找到这方面的文档。 但是,通过阅读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预处理器,后处理器和引擎如何工作的真实文档。 如果有人发现任何此类文件,请发回答。
- RefineryCMS:将引导样式应用于导航菜单
- 在TC服务器上部署rails应用程序
- 在Rails中显示链接表单错误消息
- 你如何在Rails 3中使用number_to_phone?
- 如何从Rails模型中获取属性的数据类型?
- Delayed Job如何在Ruby on Rails中工作?
- 设计身份validation – devise_error_messages! 在一个视图中导致nil的“未定义的方法`错误”:NilClass
- 在凤凰城的Rails’ufore_filter等价物
- 调用Dispatcher.dispatch时出错#<NameError:uninitialized constant ActionController :: CgiRequest