From 3b847696ffe509c9f4050528ea8839577065e1a3 Mon Sep 17 00:00:00 2001 From: Thomas Reynolds Date: Sat, 26 May 2012 14:15:36 -0700 Subject: [PATCH] Load from root bundler when running from git --- middleman-core/bin/middleman | 14 +- .../core_extensions/extensions.rb | 5 +- .../lib/middleman-core/extensions.rb | 2 +- middleman-more/lib/middleman-more.rb | 222 +++++++++--------- 4 files changed, 127 insertions(+), 116 deletions(-) diff --git a/middleman-core/bin/middleman b/middleman-core/bin/middleman index fbf07871..5ee38897 100755 --- a/middleman-core/bin/middleman +++ b/middleman-core/bin/middleman @@ -25,8 +25,14 @@ end # If we've found the root, try to setup Bundler if ENV["MM_ROOT"] - # Set up gems listed in the Gemfile. - ENV['BUNDLE_GEMFILE'] ||= File.expand_path('Gemfile', ENV["MM_ROOT"]) + root_gemfile = File.expand_path('Gemfile', ENV["MM_ROOT"]) + ENV['BUNDLE_GEMFILE'] ||= root_gemfile + + if !File.exists?(ENV['BUNDLE_GEMFILE']) + git_gemfile = Pathname.new(__FILE__).expand_path.parent.parent.parent + "Gemfile" + ENV['BUNDLE_GEMFILE'] = git_gemfile.to_s + end + require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) end @@ -34,11 +40,11 @@ end require "middleman-core/extensions" ::Middleman.load_extensions_in_path +require "middleman-core/cli" + # Default command is server ARGV.unshift("server") if ARGV.length < 1 || ARGV.first.include?("-") -require "middleman-core/cli" - # Start the CLI if ENV["MM_ROOT"] # Change directory to the root diff --git a/middleman-core/lib/middleman-core/core_extensions/extensions.rb b/middleman-core/lib/middleman-core/core_extensions/extensions.rb index 13161334..16d758c9 100644 --- a/middleman-core/lib/middleman-core/core_extensions/extensions.rb +++ b/middleman-core/lib/middleman-core/core_extensions/extensions.rb @@ -137,7 +137,10 @@ module Middleman instance_eval File.read(local_config), local_config, 1 end - activate(:sprockets) if autoload_sprockets + if autoload_sprockets + require "middleman-sprockets" + activate(:sprockets) + end run_hook :build_config if build? run_hook :development_config if development? diff --git a/middleman-core/lib/middleman-core/extensions.rb b/middleman-core/lib/middleman-core/extensions.rb index 95ed255b..b6373096 100644 --- a/middleman-core/lib/middleman-core/extensions.rb +++ b/middleman-core/lib/middleman-core/extensions.rb @@ -88,7 +88,7 @@ module Middleman extensions = rubygems_latest_specs.select do |spec| spec_has_file?(spec, EXTENSION_FILE) end - + extensions.each do |spec| require spec.name end diff --git a/middleman-more/lib/middleman-more.rb b/middleman-more/lib/middleman-more.rb index 053236ff..60aba363 100644 --- a/middleman-more/lib/middleman-more.rb +++ b/middleman-more/lib/middleman-more.rb @@ -4,141 +4,143 @@ require "middleman-core" libdir = File.expand_path(File.dirname(__FILE__)) $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir) -module Middleman::More +module Middleman + module More - # Setup extension - class << self + # Setup extension + class << self - # Once registered - def registered(app, options={}) - ### - # Setup renderers - ### + # Once registered + def registered(app, options={}) + ### + # Setup renderers + ### - # CoffeeScript Support - require "middleman-more/renderers/coffee_script" - Middleman::Application.register Middleman::Renderers::CoffeeScript + # CoffeeScript Support + require "middleman-more/renderers/coffee_script" + Middleman::Application.register Middleman::Renderers::CoffeeScript - # Haml Support - require "middleman-more/renderers/haml" - Middleman::Application.register Middleman::Renderers::Haml + # Haml Support + require "middleman-more/renderers/haml" + Middleman::Application.register Middleman::Renderers::Haml - # Sass Support - require "middleman-more/renderers/sass" - Middleman::Application.register Middleman::Renderers::Sass + # Sass Support + require "middleman-more/renderers/sass" + Middleman::Application.register Middleman::Renderers::Sass - # Markdown Support - require "middleman-more/renderers/markdown" - Middleman::Application.register Middleman::Renderers::Markdown + # Markdown Support + require "middleman-more/renderers/markdown" + Middleman::Application.register Middleman::Renderers::Markdown - # Liquid Support - require "middleman-more/renderers/liquid" - Middleman::Application.register Middleman::Renderers::Liquid + # Liquid Support + require "middleman-more/renderers/liquid" + Middleman::Application.register Middleman::Renderers::Liquid - # Slim Support - require "middleman-more/renderers/slim" - Middleman::Application.register Middleman::Renderers::Slim + # Slim Support + require "middleman-more/renderers/slim" + Middleman::Application.register Middleman::Renderers::Slim - ### - # Setup Core Extensions - ### + ### + # Setup Core Extensions + ### - # Setup default helpers - require "middleman-more/core_extensions/default_helpers" - Middleman::Application.register Middleman::CoreExtensions::DefaultHelpers + # Setup default helpers + require "middleman-more/core_extensions/default_helpers" + Middleman::Application.register Middleman::CoreExtensions::DefaultHelpers - # Setup asset path pipeline - require "middleman-more/core_extensions/assets" - Middleman::Application.register Middleman::CoreExtensions::Assets + # Setup asset path pipeline + require "middleman-more/core_extensions/assets" + Middleman::Application.register Middleman::CoreExtensions::Assets - # i18n - require "i18n" - app.after_configuration do - # 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. - ::I18n.load_path.delete_if {|path| path =~ %r{tmp/aruba}} - ::I18n.reload! - end + # i18n + require "i18n" + app.after_configuration do + # 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. + ::I18n.load_path.delete_if {|path| path =~ %r{tmp/aruba}} + ::I18n.reload! + end - Middleman::Extensions.register(:i18n) do - require "middleman-more/core_extensions/i18n" - Middleman::CoreExtensions::I18n - end + Middleman::Extensions.register(:i18n) do + require "middleman-more/core_extensions/i18n" + Middleman::CoreExtensions::I18n + end - # Compass framework - require "middleman-more/core_extensions/compass" - Middleman::Application.register Middleman::CoreExtensions::Compass + # Compass framework + require "middleman-more/core_extensions/compass" + Middleman::Application.register Middleman::CoreExtensions::Compass - ### - # Setup Optional Extensions - ### + ### + # Setup Optional Extensions + ### - # CacheBuster adds a query string to assets in dynamic templates to avoid - # browser caches failing to update to your new content. - Middleman::Extensions.register(:cache_buster) do - require "middleman-more/extensions/cache_buster" - Middleman::Extensions::CacheBuster - end + # CacheBuster adds a query string to assets in dynamic templates to avoid + # browser caches failing to update to your new content. + Middleman::Extensions.register(:cache_buster) do + require "middleman-more/extensions/cache_buster" + Middleman::Extensions::CacheBuster + end - # MinifyCss compresses CSS - Middleman::Extensions.register(:minify_css) do - require "middleman-more/extensions/minify_css" - Middleman::Extensions::MinifyCss - end + # MinifyCss compresses CSS + Middleman::Extensions.register(:minify_css) do + require "middleman-more/extensions/minify_css" + Middleman::Extensions::MinifyCss + end - # MinifyJavascript compresses JS - Middleman::Extensions.register(:minify_javascript) do - require "middleman-more/extensions/minify_javascript" - Middleman::Extensions::MinifyJavascript - end + # MinifyJavascript compresses JS + Middleman::Extensions.register(:minify_javascript) do + require "middleman-more/extensions/minify_javascript" + Middleman::Extensions::MinifyJavascript + end - # RelativeAssets allow any asset path in dynamic templates to be either - # relative to the root of the project or use an absolute URL. - Middleman::Extensions.register(:relative_assets) do - require "middleman-more/extensions/relative_assets" - Middleman::Extensions::RelativeAssets - end + # RelativeAssets allow any asset path in dynamic templates to be either + # relative to the root of the project or use an absolute URL. + Middleman::Extensions.register(:relative_assets) do + require "middleman-more/extensions/relative_assets" + Middleman::Extensions::RelativeAssets + end - # GZIP assets and pages during build - Middleman::Extensions.register(:gzip) do - require "middleman-more/extensions/gzip" - Middleman::Extensions::Gzip - end + # GZIP assets and pages during build + Middleman::Extensions.register(:gzip) do + require "middleman-more/extensions/gzip" + Middleman::Extensions::Gzip + end - # AssetHash appends a hash of the file contents to the assets filename - # to avoid browser caches failing to update to your new content. - Middleman::Extensions.register(:asset_hash) do - require "middleman-more/extensions/asset_hash" - Middleman::Extensions::AssetHash - end + # AssetHash appends a hash of the file contents to the assets filename + # to avoid browser caches failing to update to your new content. + Middleman::Extensions.register(:asset_hash) do + require "middleman-more/extensions/asset_hash" + Middleman::Extensions::AssetHash + end - # AssetHost allows you to setup multiple domains to host your static - # assets. Calls to asset paths in dynamic templates will then rotate - # through each of the asset servers to better spread the load. - Middleman::Extensions.register(:asset_host) do - require "middleman-more/extensions/asset_host" - Middleman::Extensions::AssetHost - end + # AssetHost allows you to setup multiple domains to host your static + # assets. Calls to asset paths in dynamic templates will then rotate + # through each of the asset servers to better spread the load. + Middleman::Extensions.register(:asset_host) do + require "middleman-more/extensions/asset_host" + Middleman::Extensions::AssetHost + end - # Provide Apache-style index.html files for directories - Middleman::Extensions.register(:directory_indexes) do - require "middleman-more/extensions/directory_indexes" - Middleman::Extensions::DirectoryIndexes - end + # Provide Apache-style index.html files for directories + Middleman::Extensions.register(:directory_indexes) do + require "middleman-more/extensions/directory_indexes" + Middleman::Extensions::DirectoryIndexes + end - # Lorem provides a handful of helpful prototyping methods to generate - # words, paragraphs, fake images, names and email addresses. - require "middleman-more/extensions/lorem" - Middleman::Application.register Middleman::Extensions::Lorem + # Lorem provides a handful of helpful prototyping methods to generate + # words, paragraphs, fake images, names and email addresses. + require "middleman-more/extensions/lorem" + Middleman::Application.register Middleman::Extensions::Lorem - # AutomaticImageSizes inspects the images used in your dynamic templates - # and automatically adds width and height attributes to their HTML - # elements. - Middleman::Extensions.register(:automatic_image_sizes) do - require "middleman-more/extensions/automatic_image_sizes" - Middleman::Extensions::AutomaticImageSizes + # AutomaticImageSizes inspects the images used in your dynamic templates + # and automatically adds width and height attributes to their HTML + # elements. + Middleman::Extensions.register(:automatic_image_sizes) do + require "middleman-more/extensions/automatic_image_sizes" + Middleman::Extensions::AutomaticImageSizes + end end end end