diff --git a/middleman-core/lib/middleman-core/application.rb b/middleman-core/lib/middleman-core/application.rb index 85b4a559..dda5e265 100644 --- a/middleman-core/lib/middleman-core/application.rb +++ b/middleman-core/lib/middleman-core/application.rb @@ -25,6 +25,15 @@ require 'middleman-core/config_context' require 'middleman-core/file_renderer' require 'middleman-core/template_renderer' +# Rack Request +require 'middleman-core/core_extensions/request' + +# Custom Extension API and config.rb handling +require 'middleman-core/core_extensions/extensions' + +# Catch and show exceptions at the Rack level +require 'middleman-core/core_extensions/show_exceptions' + # Core Middleman Class module Middleman class Application @@ -168,7 +177,7 @@ module Middleman delegate :link_to, :image_tag, :asset_path, to: :generic_template_context # Initialize the Middleman project - def initialize(&block) + def initialize @template_context_class = Class.new(Middleman::TemplateContext) @generic_template_context = @template_context_class.new(self) @config_context = ConfigContext.new(self, @template_context_class) @@ -193,19 +202,6 @@ module Middleman config[:source] = ENV['MM_SOURCE'] if ENV['MM_SOURCE'] - # Built-in extensions - activate :default_helpers - activate :lorem - - begin - activate :compass - rescue LoadError - # Compass is not available, don't complain about it - end - - # Evaluate a passed block if given - @config_context.instance_exec(&block) if block_given? - super end diff --git a/middleman-core/lib/middleman-core/config_context.rb b/middleman-core/lib/middleman-core/config_context.rb index 3d46b88b..ff5ffa76 100644 --- a/middleman-core/lib/middleman-core/config_context.rb +++ b/middleman-core/lib/middleman-core/config_context.rb @@ -1,3 +1,5 @@ +require 'middleman-core/core_extensions/routing' + module Middleman class ConfigContext # page routing diff --git a/middleman-core/lib/middleman-core/core_extensions.rb b/middleman-core/lib/middleman-core/core_extensions.rb index 340ca2fd..179b83bb 100644 --- a/middleman-core/lib/middleman-core/core_extensions.rb +++ b/middleman-core/lib/middleman-core/core_extensions.rb @@ -1,12 +1,6 @@ -# Rack Request -require 'middleman-core/core_extensions/request' - # File Change Notifier require 'middleman-core/core_extensions/file_watcher' -# Custom Feature API -require 'middleman-core/core_extensions/extensions' - # Data looks at the data/ folder for YAML files and makes them available # to dynamic requests. require 'middleman-core/core_extensions/data' @@ -23,22 +17,18 @@ require 'middleman-core/core_extensions/external_helpers' # Extended version of Padrino's rendering require 'middleman-core/core_extensions/rendering' -# Pass custom options to views -require 'middleman-core/core_extensions/routing' - -# Catch and show exceptions at the Rack level -require 'middleman-core/core_extensions/show_exceptions' - # Setup default helpers -Middleman::Extensions.register :default_helpers do +Middleman::Extensions.register :default_helpers, auto_activate_before_configuration: true do require 'middleman-core/core_extensions/default_helpers' Middleman::CoreExtensions::DefaultHelpers end # Compass framework -Middleman::Extensions.register :compass do +begin require 'middleman-core/core_extensions/compass' - Middleman::CoreExtensions::Compass + Middleman::Extensions.register :compass, Middleman::CoreExtensions::Compass, auto_activate_before_configuration: true +rescue LoadError + # Compass is not available, don't complain about it end ### @@ -105,7 +95,7 @@ end # Lorem provides a handful of helpful prototyping methods to generate # words, paragraphs, fake images, names and email addresses. -Middleman::Extensions.register :lorem do +Middleman::Extensions.register :lorem, auto_activate_before_configuration: true do require 'middleman-core/extensions/lorem' Middleman::Extensions::Lorem end diff --git a/middleman-core/lib/middleman-core/core_extensions/extensions.rb b/middleman-core/lib/middleman-core/core_extensions/extensions.rb index 42d12465..ea91c8cf 100644 --- a/middleman-core/lib/middleman-core/core_extensions/extensions.rb +++ b/middleman-core/lib/middleman-core/core_extensions/extensions.rb @@ -76,7 +76,7 @@ module Middleman end # Override application initialization to load `config.rb` and to call lifecycle hooks. - def initialize + def initialize(&block) super self.class.inst = self @@ -99,6 +99,9 @@ module Middleman end end + # Evaluate a passed block if given + config_context.instance_exec(&block) if block_given? + run_hook :initialized run_hook :before_configuration diff --git a/middleman-core/lib/middleman-core/core_extensions/rendering.rb b/middleman-core/lib/middleman-core/core_extensions/rendering.rb index 9b3c492a..53f72265 100644 --- a/middleman-core/lib/middleman-core/core_extensions/rendering.rb +++ b/middleman-core/lib/middleman-core/core_extensions/rendering.rb @@ -1,7 +1,6 @@ require 'middleman-core/template_context' # Rendering extension -# rubocop:disable UnderscorePrefixedVariableName module Middleman module CoreExtensions module Rendering