bogo-config 0.1.4 → 0.1.6

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
  SHA1:
3
- metadata.gz: e82f1410ca956af64f001d97b24d17d4c58bc63c
4
- data.tar.gz: 81be06542d7659ecee8be0a8766431189eaa45f6
3
+ metadata.gz: 5c87e489d7f5e98f3b7e217441233a7eebeff576
4
+ data.tar.gz: 9fa263ded146de9170464dc5479afd21887b5e92
5
5
  SHA512:
6
- metadata.gz: 03990c55d7f54f5658b98d0ed8dfa5bc13d79c0e93887dfad1e52c64e63fd1b6865ee0dea28a4a7a689c2f9e85c5a9cd9b2b436d664bf539642a659264394675
7
- data.tar.gz: 3b613f2d55b7fd741623df6bca0ffba8fd056a9188dca94de02ac736e5e6d955df4c77e4a05e44d9ad62e48785b655a0dda5433676a81a4214f8da368b800d3e
6
+ metadata.gz: f9b7fc1f135514ec82a39afd689beffa1880298db778d276e4576297335bf4ca6fb910c72eef41969785160a827ab5542e2e1d104ec341101cb41ab6917addbe
7
+ data.tar.gz: 6df814abc69e071815f8c75785e248f241b1cfb3f21a336a185845c535e765c0dc2a8a954afb0d93e00ae64078b60a3fb3a483e77f7af8a2334e34434140b05a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## v0.1.6
2
+ * Remove dirty functionality to retain consistent data access
3
+ * Allow setting configuration as immutable
4
+
1
5
  ## v0.1.4
2
6
  * Delegate more methods from config instance to underlying data instance
3
7
  * Add initial support for auto reloading configuration
data/bogo-config.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.description = 'Configuration helper library'
11
11
  s.require_path = 'lib'
12
12
  s.license = 'Apache 2.0'
13
- s.add_dependency 'bogo'
13
+ s.add_dependency 'bogo', '>= 0.1.4', '< 1.0'
14
14
  s.add_dependency 'multi_json'
15
15
  s.add_dependency 'multi_xml'
16
16
  s.add_dependency 'attribute_struct'
@@ -104,6 +104,13 @@ module Bogo
104
104
  true
105
105
  end
106
106
 
107
+ # Freeze underlying configuration data
108
+ #
109
+ # @return [self]
110
+ def immutable!
111
+ @data = data.to_smash(:freeze)
112
+ end
113
+
107
114
  # Intialize the configuration
108
115
  #
109
116
  # @return [self]
@@ -115,9 +122,11 @@ module Bogo
115
122
  hash = initial
116
123
  end
117
124
  if(hash)
125
+ is_immutable = data.frozen?
118
126
  Thread.exclusive do
119
127
  load_data(hash)
120
- data.replace(hash.to_smash.deep_merge(data))
128
+ @data = hash.to_smash.deep_merge(data.to_smash)
129
+ @data.to_smash(:freeze) if is_immutable
121
130
  end
122
131
  end
123
132
  self
@@ -126,6 +135,14 @@ module Bogo
126
135
  # Allow Smash like behavior
127
136
  def_delegators *([:data, :[]] + (Smash.public_instance_methods - Object.public_instance_methods))
128
137
 
138
+ # Override to force consistent data access (removes dirty
139
+ # functionality)
140
+ #
141
+ # @return [Smash]
142
+ def dirty
143
+ data
144
+ end
145
+
129
146
  # Load configuration from file(s)
130
147
  #
131
148
  # @return [self]
@@ -1,6 +1,6 @@
1
1
  module Bogo
2
2
  class Config
3
3
  # Current library version
4
- VERSION = Gem::Version.new('0.1.4')
4
+ VERSION = Gem::Version.new('0.1.6')
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bogo-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-13 00:00:00.000000000 Z
11
+ date: 2015-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bogo
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.1.4
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '0'
29
+ version: 0.1.4
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: multi_json
29
35
  requirement: !ruby/object:Gem::Requirement