Module: App::Config

Defined in:
lib/app-config.rb

Overview

СДЕЛАТЬ: автоперезагрузку при изменении файла.

Class Method Summary collapse

Class Method Details

.init(approot: nil, configdir: 'config', filename: 'cfg', env: ( ENV['APP_ENV'] || 'development' )) ⇒ Object

Raises:

  • (NoMethodError)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/app-config.rb', line 19

def init( approot: nil, configdir: 'config', filename: 'cfg', env: ( ENV['APP_ENV'] || 'development' ) )
  raise NoMethodError.new('Config already defined.') if defined?( ::Cfg )
  root            = Pathname( approot || Pathname( __FILE__ ).dirname ).expand_path.to_s
  env             = env.to_sym.freeze
  config          = {}
  # Все настройки приложения + роуты
  configfile      = "#{ root }/#{ configdir }/#{ filename }.#{ env }.yml"
  amqp_routesfile = "#{ root }/#{ configdir }/amqp.#{ env }.yml"
  http_routesfile = "#{ root }/#{ configdir }/http.#{ env }.yml"

  # raise ArgumentError.new("Не найден #{ configfile }!") unless File.exist?( configfile )
  # raise ArgumentError.new("Не найден #{ amqp_routesfile }!") unless File.exist?( amqp_routesfile )
  # Кто первый встал, того и тапки.
  Kernel.const_set('Cfg', config)
  config.merge!( YAML.load_file( configfile ).keys_to_symbols ) rescue nil
  $0 += "[ #{ config.app.id } ]" if config.app? && config.app.id?
  config[ :app ]     ||= { id: $0 }
  config.app[ :log ] ||= ENV['APP_LOG']

  config.merge!({
    root: root,
    env:  env,
    configdir: "#{ root }/#{ configdir }",
    amqproutes: File.exist?( amqp_routesfile ) ? YAML.load_file( amqp_routesfile ).keys_to_symbols : {},
    httproutes: File.exist?( http_routesfile ) ? YAML.load_file( http_routesfile ).keys_to_symbols : {}
  })

  config[:loglevel] =
    begin
      Kernel.const_get("Logger::#{
          ( ENV['LOG_LEVEL'] || config.app.loglevel || ( env == :production ? :WARN : :DEBUG ) ).to_s.upcase
      }")
    rescue
      Logger::DEBUG
    end
  config
end

.removeObject



57
58
59
# File 'lib/app-config.rb', line 57

def remove
  Kernel.send( :remove_const, 'Cfg' ) if defined?( Cfg )
end