module Ruter::Plugin
Public: Ruter's plugin system.
Public Instance Methods
plugin(plugin, *args, &block)
click to toggle source
Public: Loads given plugin
into the application.
Examples
require "ruter" require "ruter/protection" require "ruter/session" # Use some standard plugins Ruter.plugin(Ruter::Protection) Ruter.plugin(Ruter::Session, secret: "__a_random_secret_key__") # Make your own custom plugin: require "redcarpet" class MarkdownPlugin def self.setup(app, options = {}) app.settings[:markdown_options] = options end module ClassMethods def markdown_renderer @_markdown_renderer ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, markdown_options) end def markdown_options settings[:markdown_options] end end module InstanceMethods def markdown(text) res.write(markdown_renderer.render(text)) end end end Ruter.plugin(MarkdownPlugin, fenced_code_blocks: true) Ruter.define do root do get do markdown("This is *bongos*, indeed.") end end end
# File lib/ruter/plugin.rb, line 53 def plugin(plugin, *args, &block) if defined?(plugin::InstanceMethods) include(plugin::InstanceMethods) end if defined?(plugin::ClassMethods) extend(plugin::ClassMethods) end if plugin.respond_to?(:setup) plugin.setup(self, *args, &block) end end