canfig 0.0.10 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70fda774961e755691e8a4783071ce7298b694933c4db7b2227b8563c1afeae7
4
- data.tar.gz: 87b8c4825bf0e9b3e8d03a97c5e2f3c0643e67cca4703f48eea4e44411304959
3
+ metadata.gz: ef8277d97dee3f851bbc261e27c250272de6cc7fe862391918a9edb10a99b714
4
+ data.tar.gz: 85a61547bf9119ad5b31d3f1c488ac6bc7a6be8e945971444b7e3829cc2a29c7
5
5
  SHA512:
6
- metadata.gz: 4ad137615641ae7ca8c67716720f34c3e4068e92117887eb1f9fe786aa33175da0457d128236477fef4052391106b276ce4b8e278fd8825879e2139ea3d0972f
7
- data.tar.gz: 2811ee9abc222199f3fdba1b5398f4e938891faf756f24080c7514e6c853668ea56c47b73847b04922d72f59bac3262f5479ba69d7da040a106d674fe5f7a124
6
+ metadata.gz: 1c5d4e0a71d5e8a3923f51229c7e925895f80cd3dce206528b6cdad4090ee548a1aad874098ecd8b5526f7bacf27d8cfae706422d64528447eaa274dba71db61
7
+ data.tar.gz: 5628f2e515406cbb1362a36d54dc7b6b67118c350e2b6276ca104ac8115a2449ac4426aba2a18651112449adc7fc93a48c1ff1d6e4f2e9a1ff792e5866d96f4b
data/lib/canfig/config.rb CHANGED
@@ -28,24 +28,37 @@ module Canfig
28
28
  end
29
29
  end
30
30
 
31
+ def thread_configs
32
+ Thread.current[:_canfig_configs] ||= {}
33
+ Thread.current[:_canfig_configs]
34
+ end
35
+
36
+ def state
37
+ thread_configs[object_id] ||= {}
38
+ thread_configs[object_id]
39
+ end
40
+
31
41
  def set(key, val)
32
42
  raise NoMethodError, "undefined method `#{key.to_s}=' for #{self.to_s}" unless allowed?(key)
33
43
 
34
44
  save_state! do
35
- @state[key] = val
45
+ state[key] = val
36
46
  end
37
47
  end
38
48
 
39
49
  def env(key, default=nil, &block)
40
- @state[key] ||= begin
50
+ state[key] ||= begin
41
51
  val = ENV.fetch(key.to_s.underscore.upcase, default, &block)
42
- val && ENV.key?(val) ? env(val, default, &block) : val
52
+ val = default if val.blank?
53
+ val = env(val, default, &block) if val && ENV.key?(val.to_s)
54
+ val = eval(val) if val == 'true' || val == 'false'
55
+ val
43
56
  end
44
57
  end
45
58
 
46
59
  def clear(*keys)
47
60
  save_state! do
48
- keys.each { |key| @state[key] = nil }
61
+ keys.each { |key| state[key] = nil }
49
62
  end
50
63
  end
51
64
 
@@ -55,7 +68,7 @@ module Canfig
55
68
 
56
69
  def get(key, default=nil, &block)
57
70
  raise NoMethodError, "undefined method `#{key.to_s}' for #{self.to_s}" unless allowed?(key)
58
- @state[key] || (block_given? ? yield : default)
71
+ state[key] || (block_given? ? yield : default)
59
72
  end
60
73
 
61
74
  def [](key)
@@ -63,11 +76,11 @@ module Canfig
63
76
  end
64
77
 
65
78
  def to_h
66
- Hash[@allowed.map { |key| [key, @state[key]] }]
79
+ Hash[@allowed.map { |key| [key, state[key]] }]
67
80
  end
68
81
 
69
82
  def changed
70
- Hash[@allowed.map { |key| [key, [@saved_state[key], @state[key]]] if @saved_state[key] != @state[key] }.compact]
83
+ Hash[@allowed.map { |key| [key, [@saved_state[key], state[key]]] if @saved_state[key] != state[key] }.compact]
71
84
  end
72
85
 
73
86
  def changed?(key)
@@ -122,7 +135,6 @@ module Canfig
122
135
 
123
136
  def initialize(*args, **options, &block)
124
137
  @allowed = (args.map(&:to_sym) + options.symbolize_keys.keys).uniq
125
- @state = {}
126
138
  enable_state_saves!
127
139
  configure options, &block
128
140
  end
@@ -2,9 +2,10 @@ module Canfig
2
2
  class EnvConfig < OpenConfig
3
3
  attr_reader :namespace
4
4
 
5
- def initialize(namespace=nil, **options, &block)
6
- @namespace = namespace ? "#{namespace.to_s.underscore.upcase.gsub(/_$/, '')}_" : namespace
7
- super(**options, &block)
5
+ def configure_with_args(argh)
6
+ save_state! do
7
+ argh.symbolize_keys.each { |key,val| env(key, val) }
8
+ end
8
9
  end
9
10
 
10
11
  def get(key, default=nil, &block)
@@ -12,9 +13,22 @@ module Canfig
12
13
  end
13
14
 
14
15
  def env(key, default=nil, &block)
15
- key = key.to_s.underscore.upcase
16
- key = key.gsub(/^#{namespace}/, '') if namespace
17
- super("#{namespace}#{key}", default, &block)
16
+ @state[key.to_sym] ||= begin
17
+ key = key.to_s.underscore.upcase
18
+ key = key.gsub(/^#{namespace}/, '') if namespace
19
+ val = ENV.fetch("#{namespace}#{key}", default, &block)
20
+ val = default if val.blank?
21
+ val = env(val, default, &block) if val && ENV.key?(val.to_s)
22
+ val = eval(val) if val == 'true' || val == 'false'
23
+ val
24
+ end
25
+ end
26
+
27
+ protected
28
+
29
+ def initialize(namespace=nil, **attributes, &block)
30
+ @namespace = namespace ? "#{namespace.to_s.underscore.upcase.gsub(/_$/, '')}_" : namespace
31
+ super(**attributes, &block)
18
32
  end
19
33
  end
20
34
  end
@@ -1,3 +1,3 @@
1
1
  module Canfig
2
- VERSION = '0.0.10'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canfig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rebec
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-30 00:00:00.000000000 Z
11
+ date: 2021-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -77,7 +77,7 @@ files:
77
77
  homepage: http://github.com/markrebec/canfig
78
78
  licenses: []
79
79
  metadata: {}
80
- post_install_message:
80
+ post_install_message:
81
81
  rdoc_options: []
82
82
  require_paths:
83
83
  - lib
@@ -93,13 +93,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  requirements: []
95
95
  rubygems_version: 3.1.2
96
- signing_key:
96
+ signing_key:
97
97
  specification_version: 4
98
98
  summary: Dead simple canned configuration for gems or whatever
99
99
  test_files:
100
- - spec/spec_helper.rb
101
- - spec/fixtures/config.yml
102
- - spec/canfig/config_spec.rb
103
100
  - spec/canfig/open_config_spec.rb
104
101
  - spec/canfig/yaml_spec.rb
102
+ - spec/canfig/config_spec.rb
103
+ - spec/fixtures/config.yml
104
+ - spec/spec_helper.rb
105
105
  - spec/canfig_spec.rb