123456789_123456789_123456789_123456789_123456789_

Class: Rails::Paths::Path

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
self, ::Enumerable
Inherits: Object
Defined in: railties/lib/rails/paths.rb

Class Method Summary

Instance Attribute Summary

::Enumerable - Included

#many?

Returns true if the enumerable has more than 1 element.

Instance Method Summary

::Enumerable - Included

#exclude?

The negative of the Enumerable#include?.

#index_by

Convert an enumerable to a hash.

#sum

Calculates a sum from the elements.

Constructor Details

.new(root, current, paths, options = {}) ⇒ Path

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 114

def initialize(root, current, paths, options = {})
  @paths    = paths
  @current  = current
  @root     = root
  @glob     = options[:glob]

  options[:autoload_once] ? autoload_once! : skip_autoload_once!
  options[:eager_load]    ? eager_load!    : skip_eager_load!
  options[:autoload]      ? autoload!      : skip_autoload!
  options[:load_path]     ? load_path!     : skip_load_path!
end

Instance Attribute Details

#glob (rw)

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 112

attr_accessor :glob

Instance Method Details

#<<(path) Also known as: #push

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 161

def <<(path)
  @paths << path
end

#children

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 126

def children
  keys = @root.keys.find_all { |k|
    k.start_with?(@current) && k != @current
  }
  @root.values_at(*keys.sort)
end

#concat(paths)

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 166

def concat(paths)
  @paths.concat paths
end

#each(&block)

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 157

def each(&block)
  @paths.each(&block)
end

#existent

Returns all expanded paths but only if they exist in the filesystem.

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 200

def existent
  expanded.select { |f| File.exist?(f) }
end

#existent_directories

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 204

def existent_directories
  expanded.select { |d| File.directory?(d) }
end

#expanded Also known as: #to_a

Expands all paths against the root and return all unique values.

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 179

def expanded
  raise "You need to set a path root" unless @root.path
  result = []

  each do |p|
    path = File.expand_path(p, @root.path)

    if @glob && File.directory?(path)
      Dir.chdir(path) do
        result.concat(Dir.glob(@glob).map { |file| File.join path, file }.sort)
      end
    else
      result << path
    end
  end

  result.uniq!
  result
end

#first

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 133

def first
  expanded.first
end

#last

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 137

def last
  expanded.last
end

#push(path)

Alias for #<<.

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 164

alias :push :<<

#to_a

Alias for #expanded.

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 208

alias to_a expanded

#to_ary

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 174

def to_ary
  @paths
end

#unshift(*paths)

[ GitHub ]

  
# File 'railties/lib/rails/paths.rb', line 170

def unshift(*paths)
  @paths.unshift(*paths)
end