module Middleman::CoreExtensions::Extensions::InstanceMethods

Instance methods

Public Class Methods

new() click to toggle source

Load features before starting server

Calls superclass method
# File lib/middleman-core/core_extensions/extensions.rb, line 137
def initialize
  super

  self.class.inst = self

  # Search the root of the project for required files
  $LOAD_PATH.unshift(root)

  ::Middleman::Extension.clear_after_extension_callbacks
  run_hook :initialized

  if config[:autoload_sprockets]
    begin
      require 'middleman-sprockets'
      activate(:sprockets)
    rescue LoadError
    end
  end

  run_hook :before_configuration

  # Check for and evaluate local configuration
  local_config = File.join(root, 'config.rb')
  if File.exist? local_config
    logger.debug '== Reading:  Local config'
    instance_eval File.read(local_config), local_config, 1
  end

  run_hook :build_config if build?
  run_hook :development_config if development?

  run_hook :instance_available

  # This is for making the tests work - since the tests
  # don't completely reload middleman, I18n.load_path can get
  # polluted with paths from other test app directories that don't
  # exist anymore.
  if ENV['TEST']
    ::I18n.load_path.delete_if { |path| path =~ %r{tmp/aruba} }
    ::I18n.reload!
  end

  run_hook :after_configuration

  logger.debug 'Loaded extensions:'
  extensions.each do |ext, klass|
    if ext.is_a?(Hash)
      ext.each do |k, _|
        logger.debug "== Extension: #{k}"
      end
    else
      logger.debug "== Extension: #{ext}"
    end

    ::Middleman::Extension.activated_extension(klass) if klass.is_a?(::Middleman::Extension)
  end
end

Public Instance Methods

activate(ext, options={}, &block) click to toggle source

This method is available in the project’s ‘config.rb`. It takes a underscore-separated symbol, finds the appropriate feature module and includes it.

activate :lorem

@param [Symbol, Module] ext Which extension to activate @return [void] rubocop:disable BlockNesting

# File lib/middleman-core/core_extensions/extensions.rb, line 99
def activate(ext, options={}, &block)
  ext_module = if ext.is_a?(Module)
    ext
  else
    ::Middleman::Extensions.load(ext)
  end

  if ext_module.nil?
    logger.error "== Unknown Extension: #{ext}"
  else
    logger.debug "== Activating: #{ext}"

    if ext_module.instance_of? Module
      extensions[ext] = self.class.register(ext_module, options, &block)
    elsif ext_module.instance_of?(Class) && ext_module.ancestors.include?(::Middleman::Extension)
      if ext_module.supports_multiple_instances?
        extensions[ext] ||= {}
        key = "instance_#{extensions[ext].keys.length}"
        extensions[ext][key] = ext_module.new(self.class, options, &block)
      else
        if extensions[ext]
          logger.error "== #{ext} already activated."
        else
          extensions[ext] = ext_module.new(self.class, options, &block)
        end
      end
    end
  end
end
extensions() click to toggle source

Access activated extensions

@return [Hash<Symbol,Middleman::Extension|Module>]

# File lib/middleman-core/core_extensions/extensions.rb, line 132
def extensions
  @extensions ||= {}
end