Module: Eskel::Loader

Included in:
Eskel
Defined in:
lib/eskel/loader.rb

Instance Method Summary collapse

Instance Method Details

#after_load(&block) ⇒ Object



11
12
13
14
15
# File 'lib/eskel/loader.rb', line 11

def after_load(&block)
  @_after_load ||= []
  @_after_load << block if block_given?
  @_after_load
end

#before_load(&block) ⇒ Object



5
6
7
8
9
# File 'lib/eskel/loader.rb', line 5

def before_load(&block)
  @_before_load ||= []
  @_before_load << block if block_given?
  @_before_load
end

#dependency_pathsObject



39
40
41
# File 'lib/eskel/loader.rb', line 39

def dependency_paths
  @_dependency_paths ||= default_dependency_paths
end

#load!Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/eskel/loader.rb', line 17

def load!
  return false if loaded?
  began_at = Time.now
  Eskel.logger
  before_load.each(&:call)
  Dotenv.load root.join(".env.#{env}"), root.join('.env')
  require_dependencies(*dependency_paths)
  Eskel::Application.require_dependencies
  after_load.each(&:call)
  logger.info "Loaded Eskel in #{Time.now - began_at} seconds"
  Thread.current[:eskel_loaded] = true
end

#loaded?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/eskel/loader.rb', line 30

def loaded?
  Thread.current[:eskel_loaded]
end

#require_dependencies(*paths) ⇒ Object



34
35
36
37
# File 'lib/eskel/loader.rb', line 34

def require_dependencies(*paths)
  files = paths.flatten.flat_map{ |path| Dir.glob(path).sort_by{ |filename| filename.count('/') } }.uniq
  files.each { |rb| require rb }
end