module Garcon::Pathref
Expand a path with late-evaluated segments. Calls expand_path – ‘~’ becomes $HOME, ‘..’ is expanded, etc.
@example
A symbol represents a segment to expand Pathname.register_path(:conf_dir, '/etc/openldap') Pathname.path_to(:conf_dir) # => '/etc/openldap' Pathname.path_to(:conf_dir, ldap.conf) # => '/etc/openldap/ldap.conf'
@example
References aren't expanded until they're read Pathname.register_path(:conf_dir, '/etc/openldap') Pathname.register_path(:ldap, :conf_dir, 'ldap.conf') Pathname.path_to(:ldap) # => '/etc/openldap/ldap.conf'
@example
If we change the conf_dir, everything under it changes as well Pathname.register_path(:conf_dir, '~/.openldap.d') Pathname.path_to(:ldap) # => '/root/openldap.d/ldap.conf'
@exampl
References can be relative, and can hold symbols themselves Pathname.register_path(:conf_dir, '/etc', :appname, :environment) Pathname.register_path(:appname, 'app_awesome') Pathname.register_path(:environment, 'dev') Pathname.path_to(:conf_dir) # => '/etc/app_awesome/dev'
Constants
- ROOT_PATHS
Public Instance Methods
of(*pathsegs)
click to toggle source
@param [Array<>] pathsegs
Any mixture of strings (literal sub-paths) and symbols (interpreted as references).
@return [Pathname]
A single expanded Pathname
@api public
# File lib/garcon/core_ext/pathname.rb, line 60 def of(*pathsegs) relpath_to(*pathsegs).expand_path end
Also aliased as: path_to
register_default_paths(handle_paths = {})
click to toggle source
@api public
# File lib/garcon/core_ext/pathname.rb, line 79 def register_default_paths(handle_paths = {}) handle_paths.each_pair do |handle, pathsegs| unless ROOT_PATHS.has_key?(handle.to_sym) register_path(handle, *pathsegs) end end end
register_path(handle, *pathsegs)
click to toggle source
@api public
# File lib/garcon/core_ext/pathname.rb, line 66 def register_path(handle, *pathsegs) ArgumentError.arity_at_least!(pathsegs, 1) ROOT_PATHS[handle.to_sym] = pathsegs end
register_paths(handle_paths = {})
click to toggle source
@api public
# File lib/garcon/core_ext/pathname.rb, line 72 def register_paths(handle_paths = {}) handle_paths.each_pair do |handle, pathsegs| register_path(handle, *pathsegs) end end
relpath_to(*pathsegs)
click to toggle source
Expand a path with late-evaluated segments @see ‘.path_to`. Calls cleanpath (removing `//` double slashes and useless `..`s), but does not reference the filesystem or make paths absolute.
@api public
# File lib/garcon/core_ext/pathname.rb, line 97 def relpath_to(*pathsegs) ArgumentError.arity_at_least!(pathsegs, 1) pathsegs = pathsegs.flatten.map { |ps| expand_pathseg(ps) }.flatten self.new(File.join(*pathsegs)).cleanpath(true) end
Also aliased as: relative_path_to
unregister_path(handle)
click to toggle source
@api public
# File lib/garcon/core_ext/pathname.rb, line 88 def unregister_path(handle) ROOT_PATHS.delete handle.to_sym end