class Middleman::ExtensionManager
Public Class Methods
Source
# File lib/middleman-core/extension_manager.rb, line 8 def initialize(app) @app = app @activated = {} ::Middleman::Extensions.load_settings(@app) manager = self { before_sitemap: :before_sitemap, initialized: :before_configuration }.each do |key, value| cb = proc { manager.auto_activate(value) } @app.send(key, &cb) end @app.after_configuration_eval(&method(:activate_all)) end
Public Instance Methods
Source
# File lib/middleman-core/extension_manager.rb, line 49 def activate(ext_name, options={}, &block) begin extension = ::Middleman::Extensions.load(ext_name) rescue LoadError => e logger.debug "== Failed Activation `#{ext_name}` : #{e.message}" return end logger.debug "== Activating: #{ext_name}" if extension.supports_multiple_instances? @activated[ext_name] ||= {} key = "instance_#{@activated[ext_name].keys.length}" @activated[ext_name][key] = extension.new(@app, options, &block) elsif @activated.key?(ext_name) raise "#{ext_name} has already been activated and cannot be re-activated." else @activated[ext_name] = extension.new(@app, options, &block) end end
Activate an extension, optionally passing in options. This method is typically used from a project’s ‘config.rb`.
@example Activate an extension with no options
activate :lorem
@example Activate an extension, with options
activate :minify_javascript, inline: true
@example Use a block to configure extension options
activate :minify_javascript do |opts| opts.ignore += ['*-test.js'] end
@param [Symbol] ext_name The name of thed extension to activate @param [Hash] options Options to pass to the extension @yield [Middleman::Configuration::ConfigurationManager] Extension
options that can be modified before the extension is initialized. @return [void]
Source
# File lib/middleman-core/extension_manager.rb, line 70 def activate_all logger.debug 'Loaded extensions:' @instances = @activated.each_with_object([]) do |(ext_name, ext), sum| if ext.is_a?(Hash) ext.each do |instance_key, instance| logger.debug "== Extension: #{ext_name} #{instance_key}" sum << instance end else logger.debug "== Extension: #{ext_name}" sum << ext end end @instances.each do |ext| ::Middleman::Extension.activated_extension(ext) end end
Source
# File lib/middleman-core/extension_manager.rb, line 89 def add_exposed_to_context(context) @instances.each do |ext| ext.add_exposed_to_context(context) end end
Source
# File lib/middleman-core/extension_manager.rb, line 27 def auto_activate(key) ::Middleman::Extensions.auto_activate(key, @app) end