Class: Roast::Initializers

Inherits:
Object
  • Object
show all
Defined in:
lib/roast/initializers.rb

Class Method Summary collapse

Class Method Details

.config_root(starting_path = Dir.pwd, ending_path = File.dirname(Dir.home)) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/roast/initializers.rb', line 6

def config_root(starting_path = Dir.pwd, ending_path = File.dirname(Dir.home))
  paths = []
  candidate = starting_path
  while candidate != ending_path
    paths << File.join(candidate, ".roast")
    candidate = File.dirname(candidate)
  end

  first_existing = paths.find { |path| Dir.exist?(path) }
  first_existing || paths.first
end

.initializers_pathObject



18
19
20
# File 'lib/roast/initializers.rb', line 18

def initializers_path
  File.join(Roast::Initializers.config_root, "initializers")
end

.load_allObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/roast/initializers.rb', line 22

def load_all
  project_initializers = Roast::Initializers.initializers_path
  return unless Dir.exist?(project_initializers)

  $stderr.puts "Loading project initializers from #{project_initializers}"
  pattern = File.join(project_initializers, "**/*.rb")
  Dir.glob(pattern, sort: true).each do |file|
    $stderr.puts "Loading initializer: #{file}"
    require file
  end
rescue => e
  puts "ERROR: Error loading initializers: #{e.message}"
  Roast::Helpers::Logger.error("Error loading initializers: #{e.message}")
  # Don't fail the workflow if initializers can't be loaded
end