cfgstore 2.2.0 → 2.2.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cfgstore might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8ccc7aedc989edea696ccd3a87bdc41ce206dfac1c2f63019a9c75ffd882262
4
- data.tar.gz: ab44ee639006b59f23ad8fccc59c1e15d0f25c0e8bb23d0b9c1251b531db61f1
3
+ metadata.gz: 2cf0403e92a4ce8e9e64c93a2fdf50c4eca85a948b8fbacd9d0d016950245ac8
4
+ data.tar.gz: 264a7248f764822438bcc436b3871d0e726fe60137bc28d0c09a6175cc6560c8
5
5
  SHA512:
6
- metadata.gz: f29ef1e3b1518395f13a5b3b07561d36dbaf8a392e1c34474197a2fdb49dbef40a0038c354cce0a9b3c666ad75a130556282de84db57ea58fdaaa2d11a4d7191
7
- data.tar.gz: 8685f344832b2600be19a72fba6eb873c120dc962955b569e5d08a366bf3fe2a3c8a35c592aeee400945056a194121ef85e7ed3f38ff98f674e4daf54e9d054d
6
+ metadata.gz: c244e26ee00aa47accce4187d166e34c70a4b58f8fd3317423f097b71f2435f8bb8dbc5982411aff1f2d1773e39bb6dee4f5e8511e27f6b3e6f23d41a0986a0a
7
+ data.tar.gz: 7778fea5cbd94011b48ac05f013c9bc72a9b931409670394d50948cfc674b5f1ade49746bdc46c5286d79d838f437fbdae13aa4782a4cf99da6dbe95dac0a88c
@@ -2,12 +2,10 @@ require 'yaml'
2
2
  require 'singleton'
3
3
  require 'pathname'
4
4
  require 'monkey-hash'
5
- require_relative 'settings-hash'
6
5
 
7
6
  module App
8
7
 
9
8
  ##
10
- # Удобный прокси к SettingsHash
11
9
  # СДЕЛАТЬ: автоперезагрузку при изменении файла.
12
10
 
13
11
  module Config
@@ -20,34 +18,49 @@ module App
20
18
  module_function
21
19
  def init( approot: nil, configdir: 'config', filename: 'cfg', env: ( ENV['APP_ENV'] || 'development' ) )
22
20
  raise NoMethodError.new('Config already defined.') if defined?( ::Cfg )
23
-
24
- root ||= Pathname( approot || Pathname( __FILE__ ).dirname ).expand_path.to_s
25
- env ||= env.to_sym.freeze
26
- loglevel ||= Kernel.const_get("Logger::#{ ENV['LOG_LEVEL'].upcase }") rescue ( env == :production ? Logger::WARN : Logger::DEBUG )
27
- config ||= SettingsHash.new
21
+ root = Pathname( approot || Pathname( __FILE__ ).dirname ).expand_path.to_s
22
+ env = env.to_sym.freeze
23
+ config = {}
28
24
  # Все настройки приложения + роуты
29
- configfile = "#{ root }/#{ configdir }/#{ filename }.#{ env }.yml"
25
+ configfile = "#{ root }/#{ configdir }/#{ filename }.#{ env }.yml"
30
26
  amqp_routesfile = "#{ root }/#{ configdir }/amqp.#{ env }.yml"
31
27
  http_routesfile = "#{ root }/#{ configdir }/http.#{ env }.yml"
32
28
 
33
29
  # raise ArgumentError.new("Не найден #{ configfile }!") unless File.exist?( configfile )
34
30
  # raise ArgumentError.new("Не найден #{ amqp_routesfile }!") unless File.exist?( amqp_routesfile )
35
- # Кто первый встал, того и тапки.
31
+ # Кто первый встал, того и тапки.
36
32
  Kernel.const_set('Cfg', config)
37
33
  config.merge!( YAML.load_file( configfile ).symbolize_keys ) rescue nil
38
- $0 += "[ #{ config.app.id } ]" if config.app && config.app.id
39
- config.app.id ||= $0
40
- config.app.log ||= ENV['APP_LOG']
34
+ # puts "config: #{ config.to_hash.inspect }"
35
+ $0 += "[ #{ config.app.id } ]" if config.app? && config.app.id?
36
+ config[ :app ] ||= { id: $0 }
37
+ config.app[ :log ] ||= ENV['APP_LOG']
41
38
 
42
39
  config.merge!({
43
40
  root: root,
44
41
  env: env,
45
- loglevel: loglevel,
42
+ configdir: "#{ root }/#{ configdir }",
46
43
  amqproutes: File.exist?( amqp_routesfile ) ? YAML.load_file( amqp_routesfile ).symbolize_keys : {},
47
44
  httproutes: File.exist?( http_routesfile ) ? YAML.load_file( http_routesfile ).symbolize_keys : {}
48
45
  })
46
+ # puts "config: #{ config.to_hash.inspect }"
47
+ # require 'pry-byebug'
48
+ # binding.pry
49
+
50
+ config[:loglevel] =
51
+ begin
52
+ Kernel.const_get("Logger::#{
53
+ ( ENV['LOG_LEVEL'] || config.app.loglevel || ( env == :production ? :WARN : :DEBUG ) ).to_s.upcase
54
+ }")
55
+ rescue
56
+ Logger::DEBUG
57
+ end
49
58
  config
50
59
  end
51
60
 
61
+ def remove
62
+ Kernel.send( :remove_const, 'Cfg' ) if defined?( Cfg )
63
+ end
64
+
52
65
  end
53
66
  end
@@ -5,9 +5,9 @@ require 'monkey-hash'
5
5
  # Использует предварительно настроенный Cfg
6
6
 
7
7
  module App
8
- class Logger < Logger
8
+ class Logger < ::Logger
9
9
 
10
- attr_accessor :main_formatter, :amqp_formatter
10
+ attr_accessor :main_formatter, :amqp_formatter, :logdev
11
11
 
12
12
  def base_formatter
13
13
  return proc { |severity, datetime, progname, msg|
@@ -42,14 +42,14 @@ module App
42
42
 
43
43
  raise 'formatter должны быть Proc' if ! @main_formatter.is_a?(Proc) || ! @amqp_formatter.is_a?(Proc)
44
44
 
45
- logdev =
45
+ @logdev =
46
46
  case dest ||= Cfg.app.log
47
47
  when 'stderr', 'syslog', nil
48
- $stdout.close
49
- $stdout = $stderr
48
+ # $stdout.close
49
+ $stdout.reopen $stderr
50
50
  when 'stdout'
51
- $stderr.close
52
- $stderr = $stdout
51
+ # $stderr.close
52
+ $stderr.reopen $stdout
53
53
  else
54
54
  Cfg.app.log = "#{ Cfg.root }/#{ Cfg.app.log }" unless Cfg.app.log =~ %r{^/}
55
55
  FileUtils.mkdir_p Pathname.new( Cfg.app.log ).dirname
@@ -59,12 +59,18 @@ module App
59
59
  $stdout.reopen logf
60
60
  logf
61
61
  end
62
- super logdev, progname: Cfg.app.progname, level: Cfg.loglevel, formatter: @main_formatter
62
+ super @logdev, progname: Cfg.app.progname, level: Cfg.loglevel, formatter: @main_formatter
63
63
  Kernel.const_set 'Log', self
64
- Kernel.const_set 'MQLog', ::Logger.new( logdev, progname: "#{ Cfg.app.progname }+Bunny", level: Cfg.loglevel, formatter: @amqp_formatter )
64
+ Kernel.const_set 'MQLog', ::Logger.new( @logdev, progname: "#{ Cfg.app.progname }+Bunny", level: Cfg.loglevel, formatter: @amqp_formatter )
65
65
  Log.info{"#{ Cfg.env } started. thread #{ Thread.current.object_id }."}
66
66
  self
67
67
  end
68
+
69
+ def remove
70
+ Kernel.send( :remove_const, 'Log' ) if defined?( Log )
71
+ Kernel.send( :remove_const, 'Log' ) if defined?( MQLog )
72
+ end
73
+
68
74
  end
69
75
 
70
76
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfgstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - deemytch
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-03 00:00:00.000000000 Z
11
+ date: 2020-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -47,12 +47,11 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - lib/app-config.rb
49
49
  - lib/app-logger.rb
50
- - lib/settings-hash.rb
51
- homepage:
50
+ homepage:
52
51
  licenses:
53
52
  - GPL-2.0
54
53
  metadata: {}
55
- post_install_message:
54
+ post_install_message:
56
55
  rdoc_options: []
57
56
  require_paths:
58
57
  - lib
@@ -67,8 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
66
  - !ruby/object:Gem::Version
68
67
  version: '0'
69
68
  requirements: []
70
- rubygems_version: 3.1.2
71
- signing_key:
69
+ rubygems_version: 3.1.3
70
+ signing_key:
72
71
  specification_version: 4
73
72
  summary: Loads and serves configs.
74
73
  test_files: []
@@ -1,4 +0,0 @@
1
- require 'hashie'
2
-
3
- class SettingsHash < ::Hashie::Mash
4
- end