Class: Rails::Paths::Path

Inherits:
Array show all
Includes:
PathParent
Defined in:
railties/lib/rails/paths.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from PathParent

#method_missing

Methods inherited from Array

#as_json, #encode_json, #extract_options!, #fifth, #forty_two, #fourth, #from, #in_groups, #in_groups_of, #sample, #second, #split, #third, #to, #to_formatted_s, #to_param, #to_query, #to_sentence, #to_xml, #uniq_by, #uniq_by!, wrap

Constructor Details

#initialize(root, current, *paths) ⇒ Path

Returns a new instance of Path.



129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'railties/lib/rails/paths.rb', line 129

def initialize(root, current, *paths)
  options = paths.last.is_a?(::Hash) ? paths.pop : {}
  super(paths.flatten)

  @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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Rails::Paths::PathParent

Instance Attribute Details

#globObject

Returns the value of attribute glob



127
128
129
# File 'railties/lib/rails/paths.rb', line 127

def glob
  @glob
end

#pathObject (readonly)

Returns the value of attribute path



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

def path
  @path
end

Instance Method Details

#childrenObject



143
144
145
146
147
# File 'railties/lib/rails/paths.rb', line 143

def children
  keys = @root.keys.select { |k| k.include?(@current) }
  keys.delete(@current)
  @root.values_at(*keys.sort)
end

#existentObject

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



193
194
195
# File 'railties/lib/rails/paths.rb', line 193

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

#existent_directoriesObject



197
198
199
# File 'railties/lib/rails/paths.rb', line 197

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

#expandedObject Also known as: to_a

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



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'railties/lib/rails/paths.rb', line 174

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
      result.concat Dir[File.join(path, @glob)].sort
    else
      result << path
    end
  end

  result.uniq!
  result
end

#firstObject



149
150
151
# File 'railties/lib/rails/paths.rb', line 149

def first
  expanded.first
end

#lastObject



153
154
155
# File 'railties/lib/rails/paths.rb', line 153

def last
  expanded.last
end

#pathsObject



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

def paths
  ActiveSupport::Deprecation.warn "paths is deprecated. Please call expand instead."
  expanded
end