bogo-config 0.1.4 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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