class StackedConfig::Layers::ProjectLayer
Attributes
project_file_basename[R]
started_from_directory[R]
Public Class Methods
new(file_or_directory, project_file_basename=nil)
click to toggle source
# File lib/stacked_config/layers/project_layer.rb, line 8 def initialize(file_or_directory, project_file_basename=nil) if Dir.exists? file_or_directory raise 'You have to provide the basename of the project file !' if project_file_basename.nil? @started_from_directory = File.expand_path file_or_directory self.project_file_basename = project_file_basename else raise "Invalid project file '#{file_or_directory}' !" unless File.readable? file_or_directory normalized = File.expand_path file_or_directory @started_from_directory = File.dirname normalized self.project_file_basename = File.basename normalized end end
Public Instance Methods
file_name()
click to toggle source
# File lib/stacked_config/layers/project_layer.rb, line 21 def file_name @file_name ||= find_root_file project_file_basename, started_from_directory end
project_file_basename=(file)
click to toggle source
# File lib/stacked_config/layers/project_layer.rb, line 29 def project_file_basename=(file) @file_name = nil @project_file_basename = file end
project_root()
click to toggle source
# File lib/stacked_config/layers/project_layer.rb, line 25 def project_root File.dirname file_name end
Private Instance Methods
find_root_file(file_basename, initial_directory)
click to toggle source
# File lib/stacked_config/layers/project_layer.rb, line 36 def find_root_file(file_basename, initial_directory) prev_dir = nil cur_dir = initial_directory found_file = nil raise "Invalid directory '#{initial_directory}'" unless File.readable? initial_directory while found_file.nil? and cur_dir != prev_dir candidate_file = File.join cur_dir, file_basename if File.readable? candidate_file found_file = candidate_file end prev_dir = cur_dir cur_dir = File.expand_path '..', cur_dir end raise "Cannot find any root file named '#{file_basename}' starting from '#{initial_directory}'." if found_file.nil? found_file end