module Middleman

def load_extensions_in_path

Other tags:
    Private: -
def load_extensions_in_path
  require "rubygems"
  extensions = rubygems_latest_specs.select do |spec|
    spec_has_file?(spec, EXTENSION_FILE)
  end
  extensions.each do |spec|
    require spec.name
  end
end

def locate_root(cwd = Pathname.new(Dir.pwd))

Recursive method to find config.rb
def locate_root(cwd = Pathname.new(Dir.pwd))
  return cwd.to_s if (cwd + 'config.rb').exist?
  return false if cwd.root?
  locate_root(cwd.parent)
end

def rubygems_latest_specs

Returns:
  • (Array) - Array of latest Gem::Specification

Other tags:
    Private: -
def rubygems_latest_specs
  # If newer Rubygems
  if ::Gem::Specification.respond_to? :latest_specs
    ::Gem::Specification.latest_specs(true)
  else
    ::Gem.source_index.latest_specs
  end
end

def setup_load_paths

def setup_load_paths
  @_is_setup ||= begin
    # Only look for config.rb if MM_ROOT isn't set
    if !ENV["MM_ROOT"] && found_path = locate_root
      ENV["MM_ROOT"] = found_path
    end
    is_bundler_setup = false
    # If we've found the root, try to setup Bundler
    if 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
      if File.exists?(ENV['BUNDLE_GEMFILE'])
        is_bundler_setup = true
        require 'bundler/setup'
      end
    end
    # Automatically discover extensions in RubyGems
    require "middleman-core/extensions"
    if is_bundler_setup
      Bundler.require
    else
      ::Middleman.load_extensions_in_path
    end
    true
  end
end

def spec_has_file?(spec, path)

Returns:
  • (Boolean) - Whether the file exists

Parameters:
  • path (String) -- Path to look for
  • spec (Gem::Specification) --

Other tags:
    Private: -
def spec_has_file?(spec, path)
  full_path = File.join(spec.full_gem_path, path)
  File.exists?(full_path)
end