configurability 3.0.0.pre20161130174408 → 3.0.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 +4 -4
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +0 -0
- data/History.md +3 -1
- data/LICENSE +27 -0
- data/Manifest.txt +1 -0
- data/README.md +166 -66
- data/examples/config.yml +2 -0
- data/examples/readme.rb +14 -0
- data/lib/configurability.rb +10 -23
- metadata +9 -7
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5b8b9694625491f3e546adeaccceb6c954d5ec3
|
4
|
+
data.tar.gz: b9d69f613e03aeb99cec8c0a4d38f7dc5ba85d15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2cf44e75c61f75d701d72733a417e837d179b7c948cac985107ba212cf6df689f1fc62b6cb96d2e8c0e41f32a6c3324006970903254f1423a9cd7d1a7dc746e
|
7
|
+
data.tar.gz: 11fff4eb97457b4bd3ee7c0dfc4a38c95c09b403e5cefd4822692c03ef1ec99239061165eef28ff8aea8b5f3eb523420577a58fcc09e81bc468a1fdb52e67481
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
Bv�;ب<��C�㇕��|�v�l���>rH2˖C�@�\4�x�[�"��@4��'�m63�ƚ<���\f�+CWa��`���&E�+$R��#
|
2
|
+
��,l��'�Z����@U��̩4��l9J�[�Õ�&��Jʐ�E߁�Y��eR��ej�2C���S��Z����G�<�|B�d�3f^���vo���.D������''�����lk�T.t��i>�w�J����J�˽�C��O��s�4+���W0����}�1զ[l�؇{|�a�0?��%�Q��%α���Rj���-2���@3�ꐨg����/X��q��Ϳo뙶/N���>���j˓}�b�5��l3��<��L9�o,�so�>7/�a��N.
|
data.tar.gz.sig
ADDED
Binary file
|
data/History.md
CHANGED
data/LICENSE
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
Copyright (c) 2010-2016 Michael Granger and Mahlon E. Smith
|
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.
|
data/Manifest.txt
CHANGED
data/README.md
CHANGED
@@ -16,92 +16,180 @@ github
|
|
16
16
|
|
17
17
|
## Description
|
18
18
|
|
19
|
-
Configurability is a unified,
|
19
|
+
Configurability is a unified, non-intrusive, assume-nothing configuration system
|
20
20
|
for Ruby. It lets you keep the configuration for multiple objects in a single
|
21
21
|
config file, load the file when it's convenient for you, and distribute the
|
22
22
|
configuration when you're ready, sending it everywhere it needs to go with a
|
23
23
|
single action.
|
24
24
|
|
25
25
|
|
26
|
-
|
27
26
|
## Installation
|
28
27
|
|
29
28
|
gem install configurability
|
30
29
|
|
31
30
|
|
31
|
+
## Example
|
32
|
+
|
33
|
+
# user.rb
|
34
|
+
require 'configurability'
|
35
|
+
|
36
|
+
class User
|
37
|
+
extend Configurability
|
38
|
+
|
39
|
+
configurability( :users ) do
|
40
|
+
setting :min_password_length, default: 6
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
# config.yml
|
47
|
+
users:
|
48
|
+
min_password_length: 12
|
49
|
+
|
50
|
+
In pry:
|
51
|
+
|
52
|
+
[1] pry(main)> require 'user'
|
53
|
+
=> true
|
54
|
+
[2] pry(main)> User.min_password_length
|
55
|
+
=> 6
|
56
|
+
[3] pry(main)> config = Configurability::Config.load( "config.yml" )
|
57
|
+
=> #<Configurability::Config:0x7fd99a0f635816 loaded from config.yml ...>
|
58
|
+
[4] pry(main)> config.install
|
59
|
+
=> [Loggability, User]
|
60
|
+
[5] pry(main)> User.min_password_length
|
61
|
+
=> 12
|
62
|
+
|
63
|
+
|
32
64
|
## Usage
|
33
65
|
|
34
|
-
To add
|
35
|
-
|
66
|
+
To add Configurability to your module or class, just `extend` it and declare
|
67
|
+
some settings:
|
36
68
|
|
37
69
|
require 'configurability'
|
38
|
-
class
|
70
|
+
class Database
|
39
71
|
extend Configurability
|
72
|
+
|
73
|
+
configurability( :db ) do
|
74
|
+
setting :url, default: 'sqlite:/'
|
75
|
+
setting :user
|
76
|
+
setting :password
|
77
|
+
end
|
40
78
|
end
|
41
79
|
|
42
|
-
|
80
|
+
This sets up the class to use the `db` config key, and adds attributes for the
|
81
|
+
three subkey settings under it (with getters and setters) to the class. It also
|
82
|
+
adds a `configure` class method that will set whichever of the settings are
|
83
|
+
passed to it, defaulting the `url` to the provided value if it's not given.
|
84
|
+
|
85
|
+
If your config file (e.g., `config.yml`) looks like this:
|
86
|
+
|
87
|
+
--
|
88
|
+
db:
|
89
|
+
url: 'postgres:/acme'
|
90
|
+
user: tim
|
91
|
+
password: "pXVvVY,YjWNRRi[yPWx4"
|
92
|
+
|
93
|
+
You can configure the `Database` class (and all other objects extended with
|
94
|
+
Configurability) with it like so:
|
95
|
+
|
96
|
+
require 'configurability/config'
|
97
|
+
|
98
|
+
config = Configurability::Config.load( 'config.yml' )
|
99
|
+
Configurability.configure_objects( config )
|
100
|
+
|
101
|
+
After this happens you can access the configuration values like this:
|
102
|
+
|
103
|
+
Database.url
|
104
|
+
# => "postgres:/acme"
|
105
|
+
Database.user
|
106
|
+
# => "tim"
|
107
|
+
Database.password
|
108
|
+
# => "pXVvVY,YjWNRRi[yPWx4"
|
109
|
+
|
110
|
+
|
111
|
+
### More Details
|
112
|
+
|
113
|
+
Configurability is implemented using `Module#extend`, so there's very little
|
114
|
+
magic going on. Every object (including Class and Module objects) that is
|
115
|
+
extended with Configurability is registered in an Array of objects that will be
|
116
|
+
configured when the config is loaded.
|
117
|
+
|
118
|
+
You extend a Class, of course, as in the above example:
|
119
|
+
|
120
|
+
class MyClass
|
121
|
+
extend Configurabtility
|
122
|
+
end
|
123
|
+
|
124
|
+
But you can also add it to individual instances of objects to configure them
|
125
|
+
separately:
|
43
126
|
|
44
127
|
user = User.new
|
45
128
|
user.extend( Configurability )
|
46
129
|
|
47
|
-
|
130
|
+
When you call:
|
48
131
|
|
49
132
|
Configurability.configure_objects( config )
|
50
133
|
|
51
|
-
|
52
|
-
been
|
53
|
-
|
54
|
-
|
55
|
-
|
134
|
+
the specified `config` will be spliced up and sent to all the objects that have
|
135
|
+
been registered. `Configurability` expects the configuration to be broken
|
136
|
+
up into a number of sections, each of which is accessible via either a method
|
137
|
+
with the _section name_ or the index operator (`#[]`) that takes the _section
|
138
|
+
name_ as a `Symbol` or a `String`:
|
56
139
|
|
57
140
|
config.section_name
|
58
141
|
config[:section_name]
|
59
142
|
config['section_name']
|
60
143
|
|
61
|
-
The section name is based on an object's _config key_, which is the
|
62
|
-
|
63
|
-
|
144
|
+
The section name is based on an object's _config key_, which is the argument
|
145
|
+
you specify when declaring your settings. If you don't provide one, it defaults
|
146
|
+
to the name of the object that is being extended with all non-word characters
|
147
|
+
converted into underscores (`_`). It will also have any leading Ruby-style
|
64
148
|
namespaces stripped, e.g.,
|
65
149
|
|
66
|
-
|
67
|
-
|
68
|
-
|
150
|
+
MyClass -> :myclass
|
151
|
+
Acme::User -> :user
|
152
|
+
"J. Random Hacker" -> :j_random_hacker
|
69
153
|
|
70
154
|
If the object responds to the `#name` method, then the return value of that
|
71
155
|
method is used to derive the name. If it doesn't have a `#name` method, the
|
72
156
|
name of its `Class` will be used instead. If its class is anonymous, then
|
73
157
|
the object's config key will be `:anonymous`.
|
74
158
|
|
75
|
-
When the configuration is loaded,
|
76
|
-
|
77
|
-
|
159
|
+
When the configuration is loaded, any attribute writers that correspond with
|
160
|
+
keys of the config will be called with the configured values, and an instance
|
161
|
+
variable called `@config` is set to the appropriate section of the config.
|
78
162
|
|
79
163
|
As you add more objects to your configuration, it may be useful to group
|
80
164
|
related sections together. You can specify that your object's configuration
|
81
|
-
is part of a group by
|
82
|
-
|
165
|
+
is part of a group by specifying a config key with either a dot if it's a String or a double underscore if it's a Symbol. E.g.,
|
166
|
+
|
167
|
+
# Read from the `db` subsection of `myapp`
|
168
|
+
configurability( 'myapp.db' )
|
169
|
+
|
170
|
+
# Same thing, but with a symbol:
|
171
|
+
configurability( :myapp__db )
|
83
172
|
|
84
173
|
|
85
174
|
## Customization
|
86
175
|
|
87
|
-
The default behavior above is just provided as a reasonable default;
|
88
|
-
|
89
|
-
|
176
|
+
The default behavior above is just provided as a reasonable default; you may
|
177
|
+
want to customize one or two things about how configuration is handled in your
|
178
|
+
objects.
|
90
179
|
|
91
180
|
|
92
181
|
### Setting a Custom Config Key
|
93
182
|
|
94
|
-
|
95
|
-
|
96
|
-
config key, either using a declarative method:
|
183
|
+
If you want to customize the config key without calling `configurability` you
|
184
|
+
can do that by declaring it with the `config_key` method:
|
97
185
|
|
98
186
|
class OutputFormatter
|
99
187
|
extend Configurability
|
100
188
|
config_key :format
|
101
189
|
end
|
102
190
|
|
103
|
-
or by overriding the `#config_key` method and returning the desired
|
104
|
-
as a Symbol:
|
191
|
+
or by overriding the `#config_key` method youtself and returning the desired
|
192
|
+
value as a Symbol:
|
105
193
|
|
106
194
|
class User
|
107
195
|
extend Configurability
|
@@ -121,9 +209,9 @@ a `#configure` method that takes the config section as an argument:
|
|
121
209
|
|
122
210
|
config_key :webserver
|
123
211
|
|
124
|
-
def self::configure(
|
125
|
-
@default_bind_addr =
|
126
|
-
@default_port =
|
212
|
+
def self::configure( config )
|
213
|
+
@default_bind_addr = config[:host]
|
214
|
+
@default_port = config[:port]
|
127
215
|
end
|
128
216
|
end
|
129
217
|
|
@@ -142,28 +230,28 @@ Configurability, but it's also useful on its own.
|
|
142
230
|
Here's a quick example to demonstrate some of its features. Suppose you have a
|
143
231
|
config file that looks like this:
|
144
232
|
|
145
|
-
---
|
146
|
-
database:
|
147
|
-
development:
|
233
|
+
---
|
234
|
+
database:
|
235
|
+
development:
|
148
236
|
adapter: sqlite3
|
149
237
|
database: db/dev.db
|
150
238
|
pool: 5
|
151
239
|
timeout: 5000
|
152
|
-
testing:
|
240
|
+
testing:
|
153
241
|
adapter: sqlite3
|
154
242
|
database: db/testing.db
|
155
243
|
pool: 2
|
156
244
|
timeout: 5000
|
157
|
-
production:
|
245
|
+
production:
|
158
246
|
adapter: postgres
|
159
247
|
database: fixedassets
|
160
248
|
pool: 25
|
161
249
|
timeout: 50
|
162
|
-
ldap:
|
250
|
+
ldap:
|
163
251
|
uri: ldap://ldap.acme.com/dc=acme,dc=com
|
164
252
|
bind_dn: cn=web,dc=acme,dc=com
|
165
253
|
bind_pass: Mut@ge.Mix@ge
|
166
|
-
branding:
|
254
|
+
branding:
|
167
255
|
header: "#333"
|
168
256
|
title: "#dedede"
|
169
257
|
anchor: "#9fc8d4"
|
@@ -172,7 +260,7 @@ You can load this config like so:
|
|
172
260
|
|
173
261
|
require 'configurability/config'
|
174
262
|
config = Configurability::Config.load( 'examples/config.yml' )
|
175
|
-
# => #<Configurability::Config:0x1018a7c7016 loaded from
|
263
|
+
# => #<Configurability::Config:0x1018a7c7016 loaded from
|
176
264
|
examples/config.yml; 3 sections: database, ldap, branding>
|
177
265
|
|
178
266
|
And then access it using struct-like methods:
|
@@ -206,12 +294,17 @@ both:
|
|
206
294
|
config['branding'][:anchor]
|
207
295
|
# => "#9fc8d4"
|
208
296
|
|
209
|
-
You can install it via the Configurability
|
297
|
+
You can install it (i.e., configure your objects) via the Configurability
|
298
|
+
interface:
|
210
299
|
|
211
300
|
config.install
|
212
301
|
|
213
|
-
|
214
|
-
|
302
|
+
If you change the values in the config object, they won't propagate
|
303
|
+
automatically; you'll need to call `#install` on it again to send the changes to
|
304
|
+
the objects being configured.
|
305
|
+
|
306
|
+
You can check to see if the file the config was loaded from has changed since
|
307
|
+
you loaded it:
|
215
308
|
|
216
309
|
config.changed?
|
217
310
|
# => false
|
@@ -222,7 +315,7 @@ loaded it:
|
|
222
315
|
# => true
|
223
316
|
|
224
317
|
If it has changed (or even if it hasn't), you can reload it, which
|
225
|
-
automatically re-installs it via the Configurability interface:
|
318
|
+
automatically re-installs it via the Configurability interface if it has:
|
226
319
|
|
227
320
|
config.reload
|
228
321
|
|
@@ -235,36 +328,43 @@ write the modified config back out to the same file:
|
|
235
328
|
then dump it to a YAML string:
|
236
329
|
|
237
330
|
config.dump
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
331
|
+
# => "--- \ndatabase: \n development: \n adapter: sqlite3\n
|
332
|
+
database: db/dev.db\n pool: 5\n timeout: 5000\n testing: \n
|
333
|
+
adapter: mysql\n database: t_fixedassets\n pool: 2\n timeout:
|
334
|
+
5000\n production: \n adapter: postgres\n database:
|
335
|
+
fixedassets\n pool: 25\n timeout: 50\nldap: \n uri:
|
336
|
+
ldap://ldap.acme.com/dc=acme,dc=com\n bind_dn:
|
337
|
+
cn=web,dc=acme,dc=com\n bind_pass: Mut@ge.Mix@ge\nbranding: \n
|
338
|
+
header: \"#333\"\n title: \"#dedede\"\n anchor: \"#9fc8d4\"\n"
|
246
339
|
|
247
340
|
or write it back to the file it was loaded from:
|
248
341
|
|
249
|
-
|
342
|
+
config.write
|
343
|
+
|
344
|
+
Note that this is just using `YAML.dump`, so any comments, ordering, or other
|
345
|
+
nice formatting you have in your config file will be clobbered if you rewrite
|
346
|
+
it.
|
250
347
|
|
251
348
|
|
252
349
|
## Configuration Defaults
|
253
350
|
|
254
351
|
It's a good idea to provide a set of reasonable defaults for any configured
|
255
|
-
object.
|
256
|
-
|
257
|
-
|
352
|
+
object. The defaults for all settings are added to extended Classes and Modules
|
353
|
+
as a constant named `CONFIG_DEFAULTS`. You can, of course set this constant
|
354
|
+
yourself as well.
|
258
355
|
|
259
|
-
|
260
|
-
|
356
|
+
Configurability provides a `defaults` method that will return the hash of
|
357
|
+
settings and their default values from the `CONFIG_DEFAULTS` constant. You can
|
358
|
+
also override the `defaults` method yourself (and super to the original) if you
|
359
|
+
wish to do something different.
|
261
360
|
|
262
361
|
There are also a couple of useful functions built on top of this method:
|
263
362
|
|
264
363
|
gather_defaults
|
265
|
-
: You can fetch a Hash of the default config values of all objects that have
|
266
|
-
with Configurability by calling
|
267
|
-
|
364
|
+
: You can fetch a Hash of the default config values of all objects that have
|
365
|
+
been extended with Configurability by calling
|
366
|
+
`Configurabilty.gather_defaults`. You can also pass an object that responds
|
367
|
+
to `#merge!` to the method to merge the defaults into an existing
|
268
368
|
config.
|
269
369
|
|
270
370
|
default_config
|
@@ -276,9 +376,9 @@ default_config
|
|
276
376
|
## Development
|
277
377
|
|
278
378
|
You can submit bug reports, suggestions, clone it with Mercurial, and
|
279
|
-
read more about future plans at
|
280
|
-
{the project page}[http://bitbucket.org/ged/configurability]. If you
|
281
|
-
prefer Git, there is also a
|
379
|
+
read more about future plans at
|
380
|
+
{the project page}[http://bitbucket.org/ged/configurability]. If you
|
381
|
+
prefer Git, there is also a
|
282
382
|
{Github mirror}[https://github.com/ged/configurability].
|
283
383
|
|
284
384
|
After checking out the source, run:
|
data/examples/config.yml
CHANGED
data/examples/readme.rb
ADDED
data/lib/configurability.rb
CHANGED
@@ -3,12 +3,7 @@
|
|
3
3
|
require 'loggability'
|
4
4
|
require 'yaml'
|
5
5
|
|
6
|
-
# A configuration
|
7
|
-
#
|
8
|
-
# == Author/s
|
9
|
-
#
|
10
|
-
# * Michael Granger <ged@FaerieMUD.org>
|
11
|
-
#
|
6
|
+
# A unified, unintrusive, assume-nothing configuration system for Ruby
|
12
7
|
module Configurability
|
13
8
|
extend Loggability
|
14
9
|
|
@@ -21,7 +16,7 @@ module Configurability
|
|
21
16
|
VERSION = '3.0.0'
|
22
17
|
|
23
18
|
# Version-control revision constant
|
24
|
-
REVISION = %q$Revision:
|
19
|
+
REVISION = %q$Revision: f363eb5811b9 $
|
25
20
|
|
26
21
|
require 'configurability/deferred_config'
|
27
22
|
|
@@ -35,10 +30,6 @@ module Configurability
|
|
35
30
|
### The loaded config (if there is one)
|
36
31
|
@loaded_config = nil
|
37
32
|
|
38
|
-
### The hash of configuration calls that have already taken place -- the keys are
|
39
|
-
### Method objects for the configure methods of the configured objects, and the values
|
40
|
-
### are the config section it was called with
|
41
|
-
@configured = Hash.new( false )
|
42
33
|
|
43
34
|
class << self
|
44
35
|
|
@@ -48,9 +39,6 @@ module Configurability
|
|
48
39
|
# the loaded configuration (after ::configure_objects has been called at least once)
|
49
40
|
attr_accessor :loaded_config
|
50
41
|
|
51
|
-
# the hash of configure methods => config sections which have already been installed
|
52
|
-
attr_reader :configured
|
53
|
-
|
54
42
|
end
|
55
43
|
|
56
44
|
|
@@ -121,7 +109,6 @@ module Configurability
|
|
121
109
|
### If a configuration has been loaded (via {#configure_objects}), clear it.
|
122
110
|
def self::reset
|
123
111
|
self.loaded_config = nil
|
124
|
-
self.configured.clear
|
125
112
|
end
|
126
113
|
|
127
114
|
|
@@ -205,6 +192,12 @@ module Configurability
|
|
205
192
|
end
|
206
193
|
|
207
194
|
|
195
|
+
### Return the specified +key+ normalized into a valid Symbol config key.
|
196
|
+
def self::normalize_config_key( key )
|
197
|
+
return key.to_s.gsub( /\./, '__' ).to_sym
|
198
|
+
end
|
199
|
+
|
200
|
+
|
208
201
|
### Gather the default configuration in a Configurability::Config object and return it.
|
209
202
|
def self::default_config
|
210
203
|
return self.gather_defaults( Configurability::Config.new )
|
@@ -230,7 +223,7 @@ module Configurability
|
|
230
223
|
### Set the config key of the object.
|
231
224
|
def config_key=( sym )
|
232
225
|
Configurability.configurable_objects |= [ self ]
|
233
|
-
@config_key = normalize_config_key( sym )
|
226
|
+
@config_key = Configurability.normalize_config_key( sym )
|
234
227
|
end
|
235
228
|
|
236
229
|
|
@@ -279,12 +272,6 @@ module Configurability
|
|
279
272
|
end
|
280
273
|
|
281
274
|
|
282
|
-
### Return the specified +key+ normalized into a valid Symbol config key.
|
283
|
-
def normalize_config_key( key )
|
284
|
-
return key.to_s.gsub( /\./, '__' ).to_sym
|
285
|
-
end
|
286
|
-
|
287
|
-
|
288
275
|
#
|
289
276
|
# :section: Configuration settings block
|
290
277
|
#
|
@@ -322,7 +309,7 @@ module Configurability
|
|
322
309
|
### The default implementation of the method called by ::gather_defaults when
|
323
310
|
### gathering configuration defaults. This method expects either a
|
324
311
|
### +DEFAULT_CONFIG+ or a +CONFIG_DEFAULTS+ constant to contain the configuration
|
325
|
-
### defaults, and will just return the +fallback+ value if neither exists.
|
312
|
+
### defaults, and will just return the +fallback+ value if neither exists.
|
326
313
|
def defaults( fallback=nil )
|
327
314
|
|
328
315
|
return fallback unless respond_to?( :const_defined? )
|
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: 3.0.0
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
w8aNA5re5+Rt/Vvjxj5AcEnZnZiz5x959NaddQocX32Z1unHw44pzRNUur1GInfW
|
37
37
|
p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date: 2016-12-
|
39
|
+
date: 2016-12-28 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: loggability
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '3.15'
|
153
153
|
description: |-
|
154
|
-
Configurability is a unified,
|
154
|
+
Configurability is a unified, non-intrusive, assume-nothing configuration system
|
155
155
|
for Ruby. It lets you keep the configuration for multiple objects in a single
|
156
156
|
config file, load the file when it's convenient for you, and distribute the
|
157
157
|
configuration when you're ready, sending it everywhere it needs to go with a
|
@@ -169,12 +169,14 @@ extra_rdoc_files:
|
|
169
169
|
files:
|
170
170
|
- ChangeLog
|
171
171
|
- History.md
|
172
|
+
- LICENSE
|
172
173
|
- Manifest.txt
|
173
174
|
- README.md
|
174
175
|
- Rakefile
|
175
176
|
- bin/configurability
|
176
177
|
- examples/basicconfig.rb
|
177
178
|
- examples/config.yml
|
179
|
+
- examples/readme.rb
|
178
180
|
- lib/configurability.rb
|
179
181
|
- lib/configurability/behavior.rb
|
180
182
|
- lib/configurability/config.rb
|
@@ -201,14 +203,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
203
|
version: 2.2.0
|
202
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
205
|
requirements:
|
204
|
-
- - "
|
206
|
+
- - ">="
|
205
207
|
- !ruby/object:Gem::Version
|
206
|
-
version:
|
208
|
+
version: '0'
|
207
209
|
requirements: []
|
208
210
|
rubyforge_project:
|
209
211
|
rubygems_version: 2.6.8
|
210
212
|
signing_key:
|
211
213
|
specification_version: 4
|
212
|
-
summary: Configurability is a unified,
|
213
|
-
for Ruby
|
214
|
+
summary: Configurability is a unified, non-intrusive, assume-nothing configuration
|
215
|
+
system for Ruby
|
214
216
|
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|