configurability 2.2.2 → 2.3.0.pre20161121123955

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: c6cb98ff4c6def598e9dd33586505e827ae30f31
4
- data.tar.gz: 126a57d0241418ec5494fd85db4e60298ac0d464
3
+ metadata.gz: 470dde9269109d507424b3459e90e86f5dca7bce
4
+ data.tar.gz: 8c3ac3e698ab18ff6783c2c0c7afe2b333de8234
5
5
  SHA512:
6
- metadata.gz: 139bb292f45dc1669b82ead0ee7e7bb681f0946b860a3c2a8e256194d54f9d336f70d64151b586ce24245d529c1d1a32dd02c0d2158b2d5e67e1ba500b0a8d49
7
- data.tar.gz: 9f6399c063597133ebfdd00ffc6fdfb028bf9a09e39543b9125062f2bae8afd8fd86d3487bf0d8dba20ce06268d09e49af06af763d33a57545d59f8c3f6e0c88
6
+ metadata.gz: 5ba7e4bb087da76a09937c1eb655e02a41aed364c8ead62e95e6d87210143b94d23979c7636ea82c4b31e7391d0da6803093e4b8572a49ae9d6f302414f27312
7
+ data.tar.gz: b770a6f29e6703a0c16ccc0c56896e49e34fff4fe5ebc2eacca5533dbbab04e99879c18b65af101b7045a1b891ca77acf98412499e2e3ebd7a92305ee4aeb6b0
data/Rakefile CHANGED
@@ -71,7 +71,7 @@ file GEMSPEC => __FILE__ do |task|
71
71
  spec.files.delete( '.gemtest' )
72
72
  spec.files.delete( 'LICENSE' )
73
73
  spec.signing_key = nil
74
- spec.version = "#{spec.version}.pre#{Time.now.strftime("%Y%m%d%H%M%S")}"
74
+ spec.version = "#{spec.version.bump}.0.pre#{Time.now.strftime("%Y%m%d%H%M%S")}"
75
75
  spec.cert_chain = [ 'certs/ged.pem' ]
76
76
  File.open( task.name, 'w' ) do |fh|
77
77
  fh.write( spec.to_ruby )
@@ -21,7 +21,7 @@ module Configurability
21
21
  VERSION = '2.2.2'
22
22
 
23
23
  # Version-control revision constant
24
- REVISION = %q$Revision: 806d1f512f55 $
24
+ REVISION = %q$Revision: 93764baee5f8 $
25
25
 
26
26
  require 'configurability/deferredconfig'
27
27
 
@@ -126,38 +126,46 @@ module Configurability
126
126
 
127
127
  ### Install the appropriate section of the +config+ into the given +object+.
128
128
  def self::install_config( config, object )
129
- section = object.config_key.to_sym
130
- self.log.debug "Configuring %p with the %p section of the config." %
131
- [ object, section ]
129
+ self.log.debug "Configuring %p with the %s section of the config." %
130
+ [ object, object.config_key ]
132
131
 
133
- if config.respond_to?( section )
134
- self.log.debug " config has a %p method; using that" % [ section ]
135
- section = config.send( section )
132
+ section = self.find_config_section( config, object.config_key )
133
+ configure_method = object.method( :configure )
134
+
135
+ self.log.debug " calling %p" % [ configure_method ]
136
+ configure_method.call( section )
137
+ end
138
+
139
+
140
+ ### Find the section of the specified +config+ object that corresponds to the
141
+ ### given +key+.
142
+ def self::find_config_section( config, key )
143
+ return key.to_s.split( '__' ).inject( config ) do |section, subkey|
144
+ next nil if section.nil?
145
+ self.get_config_subsection( section, subkey.to_sym )
146
+ end
147
+ end
148
+
149
+
150
+ ### Return the subsection of the specified +config+ that corresponds to +key+, trying
151
+ ### both struct-like and hash-like interfaces.
152
+ def self::get_config_subsection( config, key )
153
+ if config.respond_to?( key )
154
+ self.log.debug " config has a #%s method; using that" % [ key ]
155
+ return config.send( key )
136
156
  elsif config.respond_to?( :[] ) && config.respond_to?( :key? )
137
157
  self.log.debug " config has a hash-ish interface..."
138
- if config.key?( section ) || config.key?( section.to_s )
139
- self.log.debug " and has a %p member; using that" % [ section ]
140
- section = config[section] || config[section.to_s]
158
+ if config.key?( key.to_sym ) || config.key?( key.to_s )
159
+ self.log.debug " and has a %s member; using that" % [ key ]
160
+ return config[ key.to_sym ] || config[ key.to_s ]
141
161
  else
142
- self.log.debug " but no %p member."
143
- section = nil
162
+ self.log.debug " but no `%s` member." % [ key ]
163
+ return nil
144
164
  end
145
165
  else
146
- self.log.debug " no %p section in %p; configuring with nil" % [ section, config ]
147
- section = nil
148
- end
149
-
150
- # Figure out if the configure method has already been called with this config
151
- # section before, and don't re-call it if so
152
- configure_method = object.method( :configure )
153
-
154
- if self.configured[ configure_method ] == section
155
- self.log.debug " avoiding re-calling %p" % [ configure_method ]
156
- return
166
+ self.log.debug " no %p section in %p; configuring with nil" % [ key, config ]
167
+ return nil
157
168
  end
158
-
159
- self.log.debug " calling %p" % [ configure_method ]
160
- configure_method.call( section )
161
169
  end
162
170
 
163
171
 
@@ -210,7 +218,7 @@ module Configurability
210
218
  ### Set the config key of the object.
211
219
  def config_key=( sym )
212
220
  Configurability.configurable_objects |= [ self ]
213
- @config_key = sym
221
+ @config_key = normalize_config_key( sym )
214
222
  end
215
223
 
216
224
 
@@ -220,6 +228,12 @@ module Configurability
220
228
  end
221
229
 
222
230
 
231
+ ### Return the specified +key+ normalized into a valid Symbol config key.
232
+ def normalize_config_key( key )
233
+ return key.to_s.gsub( /\./, '__' ).to_sym
234
+ end
235
+
236
+
223
237
  #
224
238
  # :section: Configuration Defaults API
225
239
  #
@@ -49,10 +49,12 @@ describe Configurability::Config do
49
49
  expect( described_class.new.dump.strip ).to eq( "--- {}" )
50
50
  end
51
51
 
52
+
52
53
  it "returns nil as its change description" do
53
54
  expect( described_class.new.changed_reason ).to be_nil()
54
55
  end
55
56
 
57
+
56
58
  it "autogenerates accessors for non-existant struct members" do
57
59
  config = described_class.new
58
60
  config.plugins ||= {}
@@ -62,18 +64,21 @@ describe Configurability::Config do
62
64
  expect( config.plugins.filestore.maxsize ).to eq( 1024 )
63
65
  end
64
66
 
67
+
65
68
  it "merges values loaded from the config with any defaults given" do
66
69
  config = described_class.new( TEST_CONFIG, :defaultkey => "Oh yeah." )
67
70
 
68
71
  expect( config.defaultkey ).to eq( "Oh yeah." )
69
72
  end
70
73
 
74
+
71
75
  it "symbolifies keys in defaults (issue #3)" do
72
76
  config = described_class.new( TEST_CONFIG, 'stringkey' => "String value." )
73
77
 
74
78
  expect( config.stringkey ).to eq( "String value." )
75
79
  end
76
80
 
81
+
77
82
  it "yields itself if a block is given at creation" do
78
83
  yielded_self = nil
79
84
  config = described_class.new { yielded_self = self }
@@ -81,6 +86,7 @@ describe Configurability::Config do
81
86
  expect( yielded_self ).to equal( config )
82
87
  end
83
88
 
89
+
84
90
  it "passes itself as the block argument if a block of arity 1 is given at creation" do
85
91
  arg_self = nil
86
92
  yielded_self = nil
@@ -93,12 +99,14 @@ describe Configurability::Config do
93
99
  expect( arg_self ).to equal( config )
94
100
  end
95
101
 
102
+
96
103
  it "supports both Symbols and Strings for Hash-like access" do
97
104
  config = described_class.new( TEST_CONFIG )
98
105
 
99
106
  expect( config[:section]['subsection'][:subsubsection] ).to eq( 'value' )
100
107
  end
101
108
 
109
+
102
110
  it "autoloads predicates for its members" do
103
111
  config = described_class.new( TEST_CONFIG )
104
112
 
@@ -110,6 +118,7 @@ describe Configurability::Config do
110
118
  expect( config.section.monkeysubsection? ).to be_falsey()
111
119
  end
112
120
 
121
+
113
122
  it "untaints values loaded from a config" do
114
123
  yaml = TEST_CONFIG.dup.taint
115
124
  config = described_class.new( yaml )
@@ -138,6 +147,7 @@ describe Configurability::Config do
138
147
  expect( val ).to eq([ 'pattern1', 'pattern2' ])
139
148
  end
140
149
 
150
+
141
151
  it "knows that it has a nil member" do
142
152
  val = config[:trap_on]['low disk space alert']
143
153
  expect( val ).to have_member( nil )
@@ -156,6 +166,7 @@ describe Configurability::Config do
156
166
  expect( config ).not_to respond_to( :pork_sausage )
157
167
  end
158
168
 
169
+
159
170
  it "contains values specified in the source" do
160
171
  # section:
161
172
  # subsection:
@@ -178,6 +189,7 @@ describe Configurability::Config do
178
189
  expect( config.textsection ).to eq("With some text as the value\n...and another line.")
179
190
  end
180
191
 
192
+
181
193
  it "returns struct members as an Array of Symbols" do
182
194
  expect( config.members ).to be_an_instance_of( Array )
183
195
  expect( config.members.size ).to be >= 4
@@ -186,12 +198,14 @@ describe Configurability::Config do
186
198
  end
187
199
  end
188
200
 
201
+
189
202
  it "is able to iterate over sections" do
190
203
  config.each do |key, struct|
191
204
  expect( key ).to be_an_instance_of( Symbol )
192
205
  end
193
206
  end
194
207
 
208
+
195
209
  it "dumps values specified in the source" do
196
210
  expect( config.dump ).to match( /^section:/ )
197
211
  expect( config.dump ).to match( /^\s+subsection:/ )
@@ -199,6 +213,7 @@ describe Configurability::Config do
199
213
  expect( config.dump ).to match( /^- list/ )
200
214
  end
201
215
 
216
+
202
217
  it "provides a human-readable description of itself when inspected" do
203
218
  expect( config.inspect ).to match( /\d+ sections/i )
204
219
  expect( config.inspect ).to match( /mergekey/ )
@@ -206,6 +221,7 @@ describe Configurability::Config do
206
221
  expect( config.inspect ).to match( /from memory/i )
207
222
  end
208
223
 
224
+
209
225
  it "raises an exception when reloaded" do
210
226
  expect {
211
227
  config.reload
@@ -228,6 +244,7 @@ describe Configurability::Config do
228
244
  expect( config.changed? ).to be_truthy()
229
245
  end
230
246
 
247
+
231
248
  it "should report that its internal struct was modified as the reason for the change" do
232
249
  expect( config.changed_reason ).to match( /struct was modified/i )
233
250
  end
@@ -255,6 +272,7 @@ describe Configurability::Config do
255
272
  expect( config.path ).to eq( @tmpfile.expand_path )
256
273
  end
257
274
 
275
+
258
276
  it "writes itself back to the same file by default" do
259
277
  config.port = 114411
260
278
  config.write
@@ -263,6 +281,7 @@ describe Configurability::Config do
263
281
  expect( otherconfig.port ).to eq( 114411 )
264
282
  end
265
283
 
284
+
266
285
  it "can be written to a different file" do
267
286
  begin
268
287
  path = Dir::Tmpname.make_tmpname( './another-', '.config' )
@@ -274,10 +293,12 @@ describe Configurability::Config do
274
293
  end
275
294
  end
276
295
 
296
+
277
297
  it "includes the name of the file in its inspect output" do
278
298
  expect( config.inspect ).to include( File.basename(@tmpfile.to_s) )
279
299
  end
280
300
 
301
+
281
302
  it "yields itself if a block is given at load-time" do
282
303
  yielded_self = nil
283
304
  config = described_class.load( @tmpfile.to_s ) do
@@ -286,6 +307,7 @@ describe Configurability::Config do
286
307
  expect( yielded_self ).to equal( config )
287
308
  end
288
309
 
310
+
289
311
  it "passes itself as the block argument if a block of arity 1 is given at load-time" do
290
312
  arg_self = nil
291
313
  yielded_self = nil
@@ -298,6 +320,7 @@ describe Configurability::Config do
298
320
  expect( arg_self ).to equal( config )
299
321
  end
300
322
 
323
+
301
324
  it "doesn't re-read its source file if it hasn't changed" do
302
325
  expect( config.path ).not_to receive( :read )
303
326
  expect( Configurability ).not_to receive( :configure_objects )
@@ -308,6 +331,7 @@ describe Configurability::Config do
308
331
 
309
332
  # reload if file changes
310
333
  context " whose file changes after loading" do
334
+
311
335
  before( :all ) do
312
336
  filename = Dir::Tmpname.make_tmpname( './test', '.conf' )
313
337
  @tmpfile = Pathname( filename )
@@ -333,16 +357,19 @@ describe Configurability::Config do
333
357
  expect( @config ).to be_changed
334
358
  end
335
359
 
360
+
336
361
  it "reports that its source was updated as the reason for the change" do
337
362
  expect( @config.changed_reason ).to match( /source.*updated/i )
338
363
  end
339
364
 
365
+
340
366
  it "re-reads its file when reloaded" do
341
367
  expect( @config.path ).to receive( :read ).and_return( TEST_CONFIG )
342
368
  expect( Configurability ).to receive( :configure_objects ).with( @config )
343
369
  expect( @config.reload ).to be_truthy()
344
370
  end
345
371
 
372
+
346
373
  it "reapplies its defaults when reloading" do
347
374
  @config = described_class.load( @tmpfile.to_s, :defaultskey => 8 )
348
375
  @config.reload
@@ -16,12 +16,12 @@ require 'configurability/deferredconfig'
16
16
  #####################################################################
17
17
  describe Configurability::DeferredConfig do
18
18
 
19
-
20
19
  after( :each ) do
21
20
  Configurability.configurable_objects.clear
22
21
  Configurability.reset
23
22
  end
24
23
 
24
+
25
25
  it "calls Configurability.install_config with itself when a 'configure' method is defined" do
26
26
  config = { :testing => :testing_config }
27
27
  Configurability.configure_objects( config )
@@ -34,6 +34,27 @@ describe Configurability do
34
34
  expect( klass.config_key ).to be( :testconfig )
35
35
  end
36
36
 
37
+
38
+ it "allows a config key to specify a sub-section" do
39
+ klass = Class.new do
40
+ extend Configurability
41
+ config_key :testconfig__subsection
42
+ end
43
+
44
+ expect( klass.config_key ).to eq( :testconfig__subsection )
45
+ end
46
+
47
+
48
+ it "allows a config key to specify a sub-section via a more-readable string" do
49
+ klass = Class.new do
50
+ extend Configurability
51
+ config_key "testconfig.subsection"
52
+ end
53
+
54
+ expect( klass.config_key ).to eq( :testconfig__subsection )
55
+ end
56
+
57
+
37
58
  it "fetches config sections via a method with the config key name if the config " +
38
59
  "responds_to? it" do
39
60
  klass = Class.new do
@@ -49,20 +70,26 @@ describe Configurability do
49
70
  Configurability.configure_objects( config )
50
71
  end
51
72
 
52
- it "extends including classes instead of appending features to them" do
73
+
74
+ it "fetches config subsections via a method chain that corresponds to the config key" do
53
75
  klass = Class.new do
54
- include Configurability
55
- config_key :testconfig
76
+ extend Configurability
77
+ config_key "testconfig.subsection"
56
78
  end
57
79
 
58
80
  config = double( "configuration object" )
59
81
  expect( config ).to receive( :respond_to? ).with( :testconfig ).and_return( true )
60
- expect( config ).to receive( :testconfig ).and_return( :a_config_section )
61
82
 
62
- expect( klass ).to receive( :configure ).with( :a_config_section )
83
+ section = double( "configuration section" )
84
+ expect( config ).to receive( :testconfig ).and_return( section )
85
+ expect( section ).to receive( :respond_to? ).with( :subsection ).and_return( true )
86
+ expect( section ).to receive( :subsection ).and_return( :the_config_subsection )
87
+
88
+ expect( klass ).to receive( :configure ).with( :the_config_subsection )
63
89
  Configurability.configure_objects( config )
64
90
  end
65
91
 
92
+
66
93
  it "fetches config sections via the index operator if the config doesn't respond " +
67
94
  "directly to the section name, but does to the index operator and #key?" do
68
95
  klass = Class.new do
@@ -81,6 +108,33 @@ describe Configurability do
81
108
  Configurability.configure_objects( config )
82
109
  end
83
110
 
111
+
112
+ it "fetches config subsections via the index operator if the config doesn't respond " +
113
+ "directly to the section name, but does to the index operator and #key?" do
114
+ klass = Class.new do
115
+ extend Configurability
116
+ config_key :testconfig__subsection
117
+ end
118
+
119
+ config = double( "configuration object" )
120
+ expect( config ).to receive( :respond_to? ).with( :testconfig ).and_return( false )
121
+ expect( config ).to receive( :respond_to? ).with( :key? ).and_return( true )
122
+ expect( config ).to receive( :respond_to? ).with( :[] ).and_return( true )
123
+ expect( config ).to receive( :key? ).with( :testconfig ).and_return( true )
124
+
125
+ section = double( "configuration section" )
126
+ expect( config ).to receive( :[] ).with( :testconfig ).and_return( section )
127
+ expect( section ).to receive( :respond_to? ).with( :subsection ).and_return( false )
128
+ expect( section ).to receive( :respond_to? ).with( :key? ).and_return( true )
129
+ expect( section ).to receive( :respond_to? ).with( :[] ).and_return( true )
130
+ expect( section ).to receive( :key? ).with( :subsection ).and_return( true )
131
+ expect( section ).to receive( :[] ).with( :subsection ).and_return( :the_config_subsection )
132
+
133
+ expect( klass ).to receive( :configure ).with( :the_config_subsection )
134
+ Configurability.configure_objects( config )
135
+ end
136
+
137
+
84
138
  it "passes nil to the configure method if the config doesn't respond to the section " +
85
139
  "name or the index operator" do
86
140
  klass = Class.new do
@@ -97,6 +151,7 @@ describe Configurability do
97
151
  Configurability.configure_objects( config )
98
152
  end
99
153
 
154
+
100
155
  it "tries the config key as a String if calling it with the Symbol returns nil" do
101
156
  klass = Class.new do
102
157
  extend Configurability
@@ -117,6 +172,22 @@ describe Configurability do
117
172
  Configurability.configure_objects( config )
118
173
  end
119
174
 
175
+
176
+ it "extends including classes instead of appending features to them" do
177
+ klass = Class.new do
178
+ include Configurability
179
+ config_key :testconfig
180
+ end
181
+
182
+ config = double( "configuration object" )
183
+ expect( config ).to receive( :respond_to? ).with( :testconfig ).and_return( true )
184
+ expect( config ).to receive( :testconfig ).and_return( :a_config_section )
185
+
186
+ expect( klass ).to receive( :configure ).with( :a_config_section )
187
+ Configurability.configure_objects( config )
188
+ end
189
+
190
+
120
191
  it "can be used to configure plain objects, too" do
121
192
  object = Object.new
122
193
  object.extend( Configurability )
@@ -131,6 +202,7 @@ describe Configurability do
131
202
  Configurability.configure_objects( config )
132
203
  end
133
204
 
205
+
134
206
  it "configures classes that have inherited Configurability and set a different config_key" do
135
207
  klass = Class.new do
136
208
  extend Configurability
@@ -151,6 +223,7 @@ describe Configurability do
151
223
  Configurability.configure_objects( config )
152
224
  end
153
225
 
226
+
154
227
  it "uses the object's name for its config key if it has one and hasn't specified a key " +
155
228
  "directly" do
156
229
  object = Object.new
@@ -166,6 +239,7 @@ describe Configurability do
166
239
  Configurability.configure_objects( config )
167
240
  end
168
241
 
242
+
169
243
  it "normalizes the object's name before using it" do
170
244
  object = Object.new
171
245
  def object.name; "Test Obj-Config"; end
@@ -180,7 +254,8 @@ describe Configurability do
180
254
  Configurability.configure_objects( config )
181
255
  end
182
256
 
183
- it "uses the object's class's name for its config key if it doesn't have a name and " +
257
+
258
+ it "uses the object's class name for its config key if it doesn't have a name and " +
184
259
  "hasn't specified a key directly" do
185
260
  object = Object.new
186
261
  object.extend( Configurability )
@@ -194,6 +269,7 @@ describe Configurability do
194
269
  Configurability.configure_objects( config )
195
270
  end
196
271
 
272
+
197
273
  it "uses only the last part of a class's name if it is namespaced" do
198
274
  module My
199
275
  class DbObject
@@ -210,6 +286,7 @@ describe Configurability do
210
286
  Configurability.configure_objects( config )
211
287
  end
212
288
 
289
+
213
290
  it "uses the 'anonymous' key if the object doesn't have a name, and its class is " +
214
291
  "anonymous, and it hasn't specified a key directly" do
215
292
  objectclass = Class.new
@@ -243,6 +320,7 @@ describe Configurability do
243
320
  expect( Configurability.loaded_config ).to equal( @config )
244
321
  end
245
322
 
323
+
246
324
  it "propagates the installed configuration to any objects which add Configurability" do
247
325
  objectclass = Class.new do
248
326
  def initialize; @config = nil; end
@@ -257,6 +335,7 @@ describe Configurability do
257
335
  expect( object.config ).to eq( :yes )
258
336
  end
259
337
 
338
+
260
339
  it "defers configuration until after an object has defined a #configure method if " +
261
340
  "it adds Configurability before declaring one" do
262
341
  objectclass = Class.new do
@@ -269,6 +348,7 @@ describe Configurability do
269
348
  expect( objectclass.config ).to eq( :yes )
270
349
  end
271
350
 
351
+
272
352
  it "doesn't reconfigure objects that have already been configured unless the config changes" do
273
353
  first_objectclass = Class.new do
274
354
  extend Configurability
@@ -304,6 +384,7 @@ describe Configurability do
304
384
  expect(Configurability.gather_defaults).to be_a( Hash )
305
385
  end
306
386
 
387
+
307
388
  it "fetches defaults from a CONFIG_DEFAULTS constant if the object defines one" do
308
389
  klass = Class.new do
309
390
  extend Configurability
@@ -319,6 +400,7 @@ describe Configurability do
319
400
  expect( defaults[:testconfig] ).to_not be( klass.const_get(:CONFIG_DEFAULTS) )
320
401
  end
321
402
 
403
+
322
404
  it "fetches defaults from a DEFAULT_CONFIG constant if the object defines one" do
323
405
  klass = Class.new do
324
406
  extend Configurability
@@ -333,6 +415,7 @@ describe Configurability do
333
415
  expect( defaults[:testconfig] ).to_not be( klass.const_get(:DEFAULT_CONFIG) )
334
416
  end
335
417
 
418
+
336
419
  it "fetches defaults from a #defaults method if the object implements one" do
337
420
  klass = Class.new do
338
421
  extend Configurability
@@ -347,6 +430,7 @@ describe Configurability do
347
430
  expect( defaults[:otherconfig] ).to_not be( klass.defaults )
348
431
  end
349
432
 
433
+
350
434
  it "can return a Configurability::Config object with defaults, too" do
351
435
  klass1 = Class.new do
352
436
  extend Configurability
@@ -374,6 +458,7 @@ describe Configurability do
374
458
  expect( config.otherconfig.other ).to be_truthy()
375
459
  end
376
460
 
461
+
377
462
  it "returns defaults for an object that inherits from a class with Configurability" do
378
463
  klass = Class.new do
379
464
  extend Configurability
@@ -390,7 +475,6 @@ describe Configurability do
390
475
 
391
476
  expect( config ).to respond_to( :spanishconfig )
392
477
  expect( config.spanishconfig.uno ).to eq( 1 )
393
-
394
478
  end
395
479
 
396
480
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configurability
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.3.0.pre20161121123955
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
@@ -35,7 +35,7 @@ cert_chain:
35
35
  w8aNA5re5+Rt/Vvjxj5AcEnZnZiz5x959NaddQocX32Z1unHw44pzRNUur1GInfW
36
36
  p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
37
37
  -----END CERTIFICATE-----
38
- date: 2016-09-28 00:00:00.000000000 Z
38
+ date: 2016-11-21 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: loggability
@@ -66,103 +66,103 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '1.4'
68
68
  - !ruby/object:Gem::Dependency
69
- name: hoe-highline
69
+ name: hoe-deveiate
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.2'
74
+ version: '0.8'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.2'
81
+ version: '0.8'
82
82
  - !ruby/object:Gem::Dependency
83
- name: rdoc
83
+ name: hoe-highline
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '4.0'
88
+ version: '0.2'
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '4.0'
95
+ version: '0.2'
96
96
  - !ruby/object:Gem::Dependency
97
- name: hoe-deveiate
97
+ name: simplecov
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0.5'
102
+ version: '0.8'
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0.5'
109
+ version: '0.8'
110
110
  - !ruby/object:Gem::Dependency
111
- name: simplecov
111
+ name: hoe-bundler
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0.8'
116
+ version: '1.2'
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0.8'
123
+ version: '1.2'
124
124
  - !ruby/object:Gem::Dependency
125
- name: hoe-bundler
125
+ name: rspec
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '1.2'
130
+ version: '3.0'
131
131
  type: :development
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '1.2'
137
+ version: '3.0'
138
138
  - !ruby/object:Gem::Dependency
139
- name: rspec
139
+ name: rdoc
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '3.0'
144
+ version: '4.0'
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '3.0'
151
+ version: '4.0'
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: hoe
154
154
  requirement: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '3.12'
158
+ version: '3.15'
159
159
  type: :development
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '3.12'
165
+ version: '3.15'
166
166
  description: |-
167
167
  Configurability is a unified, unintrusive, assume-nothing configuration system
168
168
  for Ruby. It lets you keep the configuration for multiple objects in a single
@@ -179,10 +179,8 @@ extra_rdoc_files:
179
179
  - Manifest.txt
180
180
  - README.rdoc
181
181
  files:
182
- - ".gemtest"
183
182
  - ChangeLog
184
183
  - History.rdoc
185
- - LICENSE
186
184
  - Manifest.txt
187
185
  - README.rdoc
188
186
  - Rakefile
@@ -214,12 +212,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
214
212
  version: 1.9.2
215
213
  required_rubygems_version: !ruby/object:Gem::Requirement
216
214
  requirements:
217
- - - ">="
215
+ - - ">"
218
216
  - !ruby/object:Gem::Version
219
- version: '0'
217
+ version: 1.3.1
220
218
  requirements: []
221
219
  rubyforge_project:
222
- rubygems_version: 2.6.6
220
+ rubygems_version: 2.6.8
223
221
  signing_key:
224
222
  specification_version: 4
225
223
  summary: Configurability is a unified, unintrusive, assume-nothing configuration system
checksums.yaml.gz.sig DELETED
Binary file
data.tar.gz.sig DELETED
@@ -1,2 +0,0 @@
1
- ��,�;����"3D����M�J�n��az}j$Co�f�dUm0<�.����x���|ִ�ʕ��fEmn�� �):%c�|Oϔ�+i��V/r ��[���ޡ�S�
2
- l�L�dz|B �f{ֳ�(�x��
data/.gemtest DELETED
File without changes
data/LICENSE DELETED
@@ -1,27 +0,0 @@
1
- Copyright (c) 2010-2016 Michael Granger
2
- All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions are met:
6
-
7
- * Redistributions of source code must retain the above copyright notice,
8
- this list of conditions and the following disclaimer.
9
-
10
- * Redistributions in binary form must reproduce the above copyright notice,
11
- this list of conditions and the following disclaimer in the documentation
12
- and/or other materials provided with the distribution.
13
-
14
- * Neither the name of the author/s, nor the names of the project's
15
- contributors may be used to endorse or promote products derived from this
16
- software without specific prior written permission.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
22
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
metadata.gz.sig DELETED
@@ -1,4 +0,0 @@
1
- -�ܼπi)?S�����L��p���&'P�=�7��/��3ߘ��&���X$�#w�I�z�Wٶ�Ċ�VжosL��"��a�c��&�����?{�WTD2ޡ�`��5I�0��Pv}�P�b=GPPRS�ZN�<����nOז1�
2
- -$c:0�Bu~�����@��ȼ���;��g
3
- ��\�,*%m����t������m��A�:��{���y<�I�E�b�� +E���3ټUgW�<c��d6T�A*�T���*��0�=��O.��#�*dD�
4
- ӯo~���d�.��"'SiF��O��^� �,0�������]���NRT �V��C�X��O�٪ �}<t"�7S�՟W4� {E"����19[ʴ ��-�1