Sha256: 7f22ab244d0cd3695480eee3b48df4a00beec81435310aa347cc98c23e55da94

Contents?: true

Size: 1.33 KB

Versions: 34

Compression:

Stored size: 1.33 KB

Contents

# Core Pathname library used for traversal
require 'pathname'

module Middleman
  class << self
    def setup_load_paths
      @_is_setup ||= begin

        # Only look for config.rb if MM_ROOT isn't set
        if !ENV['MM_ROOT'] && (found_path = findup('config.rb'))
          ENV['MM_ROOT'] = found_path
        end

        # If we've found the root, try to setup Bundler
        setup_bundler if ENV['MM_ROOT']

        true
      end
    end

    private

    # Set BUNDLE_GEMFILE and run Bundler setup. Raises an exception if there is no Gemfile
    def setup_bundler
      if found_gemfile_root = findup('Gemfile', ENV['MM_ROOT'])
        ENV['BUNDLE_GEMFILE'] ||= File.join(found_gemfile_root, 'Gemfile')
      end

      unless File.exist?(ENV['BUNDLE_GEMFILE'])
        ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../../Gemfile', __FILE__)
      end

      if File.exist?(ENV['BUNDLE_GEMFILE'])
        require 'bundler/setup'
        Bundler.require
      else
        raise "Couldn't find your Gemfile. Middleman projects require a Gemfile for specifying dependencies."
      end
    end

    # Recursive method to find a file in parent directories
    def findup(filename, cwd=Dir.pwd)
      cwd = Pathname(cwd)
      return cwd.to_s if (cwd + filename).exist?
      return false if cwd.root?
      findup(filename, cwd.parent)
    end
  end
end

Version data entries

34 entries across 34 versions & 3 rubygems

Version Path
middleman-core-4.6.0 lib/middleman-core/load_paths.rb
middleman-core-4.5.1 lib/middleman-core/load_paths.rb
middleman-core-4.5.0 lib/middleman-core/load_paths.rb
middleman-core-4.4.3 lib/middleman-core/load_paths.rb
middleman-core-4.4.2 lib/middleman-core/load_paths.rb
middleman-core-4.4.0 lib/middleman-core/load_paths.rb
middleman-core-4.3.11 lib/middleman-core/load_paths.rb
middleman-core-4.3.10 lib/middleman-core/load_paths.rb
middleman-core-4.3.8 lib/middleman-core/load_paths.rb
middleman-core-4.3.7 lib/middleman-core/load_paths.rb
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.3.3/lib/middleman-core/load_paths.rb
middleman-core-4.3.6 lib/middleman-core/load_paths.rb
middleman-core-4.3.5 lib/middleman-core/load_paths.rb
middleman-core-4.3.4 lib/middleman-core/load_paths.rb
middleman-core-4.3.3 lib/middleman-core/load_paths.rb
middleman-core-4.3.2 lib/middleman-core/load_paths.rb
middleman-core-4.3.1 lib/middleman-core/load_paths.rb
middleman-core-4.3.0 lib/middleman-core/load_paths.rb
middleman-core-with-external-sources-watch-fix-4.1.10 lib/middleman-core/load_paths.rb
middleman-core-4.3.0.rc.1 lib/middleman-core/load_paths.rb