# module Chef::Mixin::PathSanity

### Public Instance Methods

enforce_path_sanity(env=ENV) click to toggle source

    # File lib/chef/mixin/path_sanity.rb, line 23
    def enforce_path_sanity(env=ENV)
      if Chef::Config[:enforce_path_sanity]
        env["PATH"] = "" if env["PATH"].nil?
        path_separator = Chef::Platform.windows? ? ';' : ':'
        existing_paths = env["PATH"].split(path_separator)
        # ensure the Ruby and Gem bindirs are included
        # mainly for 'full-stack' Chef installs
        paths_to_add = []
        paths_to_add << ruby_bindir unless sane_paths.include?(ruby_bindir)
        paths_to_add << gem_bindir unless sane_paths.include?(gem_bindir)
        paths_to_add << sane_paths if sane_paths
        paths_to_add.flatten!.compact!
        paths_to_add.each do |sane_path|
          unless existing_paths.include?(sane_path)
            env_path = env["PATH"].dup
            env_path << path_separator unless env["PATH"].empty?
            env_path << sane_path
            env["PATH"] = env_path
          end
        end
      end
    end