configurability 3.3.0 → 3.4.1
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 +0 -0
- data.tar.gz.sig +0 -0
- data/ChangeLog +849 -794
- data/History.md +26 -0
- data/LICENSE +1 -1
- data/Manifest.txt +0 -1
- data/README.md +41 -5
- data/Rakefile +6 -6
- data/lib/configurability.rb +50 -8
- data/lib/configurability/setting_installer.rb +21 -0
- data/spec/configurability_spec.rb +80 -0
- metadata +43 -41
- metadata.gz.sig +0 -0
- data/bin/configurability +0 -342
data/History.md
CHANGED
@@ -1,3 +1,29 @@
|
|
1
|
+
## v3.4.1 [2019-09-03] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
Bugfixes:
|
4
|
+
|
5
|
+
- Bump minimal Ruby version to 2.5.
|
6
|
+
|
7
|
+
Documentation:
|
8
|
+
|
9
|
+
- Change URLs to Sourcehut/ability.guide
|
10
|
+
- Fix license years, README title
|
11
|
+
|
12
|
+
|
13
|
+
## v3.4.0 [2019-09-01] Michael Granger <ged@FaerieMUD.org>
|
14
|
+
|
15
|
+
Bugfixes:
|
16
|
+
|
17
|
+
- Remove old command that depended on Trollop
|
18
|
+
|
19
|
+
Enhancements:
|
20
|
+
|
21
|
+
- Add a predicate setting option
|
22
|
+
- Add a test for declaring helper methods inside a settings block
|
23
|
+
- Add after-configure hooks to execute a block after the configuration
|
24
|
+
has been loaded
|
25
|
+
|
26
|
+
|
1
27
|
## v3.3.0 [2018-09-12] Michael Granger <ged@FaerieMUD.org>
|
2
28
|
|
3
29
|
Enhancements:
|
data/LICENSE
CHANGED
data/Manifest.txt
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# Configurability
|
2
2
|
|
3
3
|
home
|
4
|
-
: https://
|
4
|
+
: https://configur.ability.guide/
|
5
5
|
|
6
6
|
code
|
7
|
-
: https://
|
7
|
+
: https://hg.sr.ht/~ged/Configurability
|
8
8
|
|
9
9
|
docs
|
10
10
|
: http://deveiate.org/code/configurability
|
@@ -117,6 +117,42 @@ After this happens you can access the configuration values like this:
|
|
117
117
|
Database.password
|
118
118
|
# => "pXVvVY,YjWNRRi[yPWx4"
|
119
119
|
|
120
|
+
You can add helper methods inside the `configurability` block to eliminate
|
121
|
+
repeated code in your setting blocks:
|
122
|
+
|
123
|
+
configurability( :server ) do
|
124
|
+
def self::make_path( value )
|
125
|
+
return nil unless value
|
126
|
+
pn = Pathname( value )
|
127
|
+
raise "Can't read from %s!" % [ pn ] unless pn.readable?
|
128
|
+
return pn
|
129
|
+
end
|
130
|
+
|
131
|
+
setting :template_path do |value|
|
132
|
+
make_path( value )
|
133
|
+
end
|
134
|
+
|
135
|
+
setting :plugin_path do |*values|
|
136
|
+
make_path( value )
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
If a setting is a boolean, you can also have a predicate method created for it
|
141
|
+
alongside its getter and setter:
|
142
|
+
|
143
|
+
class Mailer
|
144
|
+
extend Configurability
|
145
|
+
configurability( :db ) do
|
146
|
+
setting :use_whitelist, default: false, predicate: true
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
Mailer.use_whitelist?
|
151
|
+
# => false
|
152
|
+
Mailer.use_whitelist = true
|
153
|
+
Mailer.use_whitelist?
|
154
|
+
# => true
|
155
|
+
|
120
156
|
|
121
157
|
### More Details
|
122
158
|
|
@@ -387,9 +423,9 @@ default_config
|
|
387
423
|
|
388
424
|
You can submit bug reports, suggestions, clone it with Mercurial, and
|
389
425
|
read more about future plans at
|
390
|
-
|
426
|
+
[the project page](http://hg.sr.ht/ged/configurability). If you
|
391
427
|
prefer Git, there is also a
|
392
|
-
|
428
|
+
[Github mirror](https://github.com/ged/configurability).
|
393
429
|
|
394
430
|
After checking out the source, run:
|
395
431
|
|
@@ -401,7 +437,7 @@ and generate the API documentation.
|
|
401
437
|
|
402
438
|
## License
|
403
439
|
|
404
|
-
Copyright (c) 2010-
|
440
|
+
Copyright (c) 2010-2019 Michael Granger and Mahlon E. Smith
|
405
441
|
All rights reserved.
|
406
442
|
|
407
443
|
Redistribution and use in source and binary forms, with or without
|
data/Rakefile
CHANGED
@@ -22,10 +22,10 @@ hoespec = Hoe.spec 'configurability' do |spec|
|
|
22
22
|
spec.extra_rdoc_files = FileList[ '*.rdoc', '*.md' ]
|
23
23
|
spec.license 'BSD-3-Clause'
|
24
24
|
spec.urls = {
|
25
|
-
home: '
|
26
|
-
code: '
|
27
|
-
docs: '
|
28
|
-
github: '
|
25
|
+
home: 'https://configur.ability.guide/',
|
26
|
+
code: 'https://hg.sr.ht/ged/Configurability',
|
27
|
+
docs: 'https://deveiate.org/code/configurability',
|
28
|
+
github: 'https://github.com/ged/configurability',
|
29
29
|
}
|
30
30
|
|
31
31
|
spec.developer 'Michael Granger', 'ged@FaerieMUD.org'
|
@@ -35,9 +35,9 @@ hoespec = Hoe.spec 'configurability' do |spec|
|
|
35
35
|
|
36
36
|
spec.dependency 'hoe-deveiate', '~> 0.8', :developer
|
37
37
|
spec.dependency 'simplecov', '~> 0.12', :developer
|
38
|
-
spec.dependency 'rspec', '~> 3.
|
38
|
+
spec.dependency 'rspec', '~> 3.8', :developer
|
39
39
|
|
40
|
-
spec.require_ruby_version( '>= 2.
|
40
|
+
spec.require_ruby_version( '>= 2.5.0' )
|
41
41
|
|
42
42
|
spec.hg_sign_tags = true if spec.respond_to?( :hg_sign_tags= )
|
43
43
|
spec.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
|
data/lib/configurability.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'set'
|
3
4
|
require 'loggability'
|
4
5
|
require 'yaml'
|
5
6
|
|
@@ -13,10 +14,10 @@ module Configurability
|
|
13
14
|
|
14
15
|
|
15
16
|
# Library version constant
|
16
|
-
VERSION = '3.
|
17
|
+
VERSION = '3.4.1'
|
17
18
|
|
18
19
|
# Version-control revision constant
|
19
|
-
REVISION = %q$Revision
|
20
|
+
REVISION = %q$Revision$
|
20
21
|
|
21
22
|
require 'configurability/deferred_config'
|
22
23
|
|
@@ -25,20 +26,58 @@ module Configurability
|
|
25
26
|
|
26
27
|
|
27
28
|
### The objects that have had Configurability added to them
|
29
|
+
##
|
30
|
+
# the Array of objects that have had Configurability added to them
|
31
|
+
singleton_class.attr_accessor :configurable_objects
|
28
32
|
@configurable_objects = []
|
29
33
|
|
30
|
-
|
34
|
+
##
|
35
|
+
# the loaded configuration (after ::configure_objects has been called at least once)
|
36
|
+
singleton_class.attr_accessor :loaded_config
|
31
37
|
@loaded_config = nil
|
32
38
|
|
39
|
+
##
|
40
|
+
# An Array of callbacks to be run after the config is loaded
|
41
|
+
@after_configure_hooks = Set.new
|
42
|
+
singleton_class.attr_reader :after_configure_hooks
|
33
43
|
|
34
|
-
class << self
|
35
44
|
|
36
|
-
|
37
|
-
attr_accessor :configurable_objects
|
45
|
+
@after_configure_hooks_run = false
|
38
46
|
|
39
|
-
|
40
|
-
|
47
|
+
### Returns +true+ if the after-configuration hooks have run at least once.
|
48
|
+
def self::after_configure_hooks_run?
|
49
|
+
return @after_configure_hooks_run ? true : false
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
### Set the flag that indicates that the after-configure hooks have run at least
|
54
|
+
### once.
|
55
|
+
def self::after_configure_hooks_run=( new_value )
|
56
|
+
@after_configure_hooks_run = new_value ? true : false
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
### Register a callback to be run after the config is loaded.
|
61
|
+
def self::after_configure( &block )
|
62
|
+
raise LocalJumpError, "no block given" unless block
|
63
|
+
self.after_configure_hooks << block
|
41
64
|
|
65
|
+
# Call the block immediately if the hooks have already been called or are in
|
66
|
+
# the process of being called.
|
67
|
+
block.call if self.after_configure_hooks_run?
|
68
|
+
end
|
69
|
+
singleton_class.alias_method :after_configuration, :after_configure
|
70
|
+
|
71
|
+
|
72
|
+
### Call the post-configuration callbacks.
|
73
|
+
def self::call_after_configure_hooks
|
74
|
+
self.log.debug " calling %d post-config hooks" % [ self.after_configure_hooks.length ]
|
75
|
+
@after_configure_hooks_run = true
|
76
|
+
|
77
|
+
self.after_configure_hooks.to_a.each do |hook|
|
78
|
+
# self.log.debug " %s line %s..." % hook.source_location
|
79
|
+
hook.call
|
80
|
+
end
|
42
81
|
end
|
43
82
|
|
44
83
|
|
@@ -103,12 +142,15 @@ module Configurability
|
|
103
142
|
self.configurable_objects.each do |obj|
|
104
143
|
self.install_config( config, obj )
|
105
144
|
end
|
145
|
+
|
146
|
+
self.call_after_configure_hooks
|
106
147
|
end
|
107
148
|
|
108
149
|
|
109
150
|
### If a configuration has been loaded (via {#configure_objects}), clear it.
|
110
151
|
def self::reset
|
111
152
|
self.loaded_config = nil
|
153
|
+
self.after_configure_hooks_run = false
|
112
154
|
end
|
113
155
|
|
114
156
|
|
@@ -50,6 +50,11 @@ class Configurability::SettingInstaller
|
|
50
50
|
|
51
51
|
self.target.define_singleton_method( "#{name}", &reader )
|
52
52
|
self.target.define_singleton_method( "#{name}=", &writer )
|
53
|
+
|
54
|
+
if options[:predicate]
|
55
|
+
predicate = self.make_setting_predicate( name, options )
|
56
|
+
self.target.define_singleton_method( "#{name}?", &predicate )
|
57
|
+
end
|
53
58
|
end
|
54
59
|
|
55
60
|
|
@@ -87,6 +92,22 @@ class Configurability::SettingInstaller
|
|
87
92
|
end
|
88
93
|
|
89
94
|
|
95
|
+
### Create the body of the setting predicate method with the specified +name+ and +options+.
|
96
|
+
def make_setting_predicate( name, options )
|
97
|
+
if options[:use_class_vars]
|
98
|
+
return lambda do
|
99
|
+
Loggability[ Configurability ].debug "Using class variables for %s of %p" %
|
100
|
+
[ name, self ]
|
101
|
+
self.class_variable_get("@@#{name}") ? true : false
|
102
|
+
end
|
103
|
+
else
|
104
|
+
return lambda {
|
105
|
+
self.instance_variable_get("@#{name}") ? true : false
|
106
|
+
}
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
|
90
111
|
### Add a default for +name+ to the CONFIG_DEFAULTS constant of the target, creating
|
91
112
|
### it if necessary.
|
92
113
|
def add_default( name, options )
|
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'ipaddr'
|
4
|
+
require 'socket'
|
3
5
|
require 'ostruct'
|
4
6
|
require 'helpers'
|
5
7
|
|
@@ -17,11 +19,13 @@ describe Configurability do
|
|
17
19
|
|
18
20
|
before( :each ) do
|
19
21
|
Configurability.configurable_objects.clear
|
22
|
+
Configurability.after_configure_hooks.clear
|
20
23
|
Configurability.reset
|
21
24
|
end
|
22
25
|
|
23
26
|
after( :all ) do
|
24
27
|
Configurability.configurable_objects.clear
|
28
|
+
Configurability.after_configure_hooks.clear
|
25
29
|
Configurability.reset
|
26
30
|
end
|
27
31
|
|
@@ -705,6 +709,82 @@ describe Configurability do
|
|
705
709
|
from( nil )
|
706
710
|
end
|
707
711
|
|
712
|
+
|
713
|
+
it "allows declaration of singleton helper methods" do
|
714
|
+
mod.configurability( :testconfig ) do
|
715
|
+
def self::parse_ip_blocks( *values )
|
716
|
+
values.flatten.map do |value|
|
717
|
+
IPAddr.new( value, Socket::AF_INET )
|
718
|
+
end
|
719
|
+
end
|
720
|
+
setting :whitelisted_ip_blocks do |*values|
|
721
|
+
parse_ip_blocks( values )
|
722
|
+
end
|
723
|
+
setting :blacklisted_ip_blocks do |*values|
|
724
|
+
parse_ip_blocks( values )
|
725
|
+
end
|
726
|
+
end
|
727
|
+
|
728
|
+
expect {
|
729
|
+
mod.whitelisted_ip_blocks = ['127.0.0.1/8', '203.0.113.0/24']
|
730
|
+
}.to change { mod.whitelisted_ip_blocks }.to([
|
731
|
+
IPAddr.new( '127.0.0.0/8' ), IPAddr.new( '203.0.113.0/24' )
|
732
|
+
])
|
733
|
+
end
|
734
|
+
|
735
|
+
|
736
|
+
it "can declare a predicate method for a setting" do
|
737
|
+
mod.configurability( :testconfig ) do
|
738
|
+
setting :use_whitelist, default: false, predicate: true
|
739
|
+
end
|
740
|
+
|
741
|
+
expect {
|
742
|
+
mod.use_whitelist = true
|
743
|
+
}.to change { mod.use_whitelist? }.from( false ).to( true )
|
744
|
+
end
|
745
|
+
|
746
|
+
end
|
747
|
+
|
748
|
+
|
749
|
+
describe "hooks" do
|
750
|
+
|
751
|
+
it "will call any registered callbacks after the config is installed" do
|
752
|
+
hook_was_called = false
|
753
|
+
Configurability.after_configure do
|
754
|
+
hook_was_called = true
|
755
|
+
end
|
756
|
+
Configurability.call_after_configure_hooks
|
757
|
+
|
758
|
+
expect( hook_was_called ).to be( true )
|
759
|
+
end
|
760
|
+
|
761
|
+
|
762
|
+
it "will immediately call after_config callbacks registered after the config is installed" do
|
763
|
+
hook_was_called = false
|
764
|
+
Configurability.call_after_configure_hooks
|
765
|
+
|
766
|
+
Configurability.after_configure do
|
767
|
+
hook_was_called = true
|
768
|
+
end
|
769
|
+
|
770
|
+
expect( hook_was_called ).to be( true )
|
771
|
+
end
|
772
|
+
|
773
|
+
|
774
|
+
it "can add new after_configure hooks even while the current ones are being run" do
|
775
|
+
hook_was_called = false
|
776
|
+
Configurability.after_configure do
|
777
|
+
Configurability.after_configure do
|
778
|
+
hook_was_called = true
|
779
|
+
end
|
780
|
+
end
|
781
|
+
|
782
|
+
Configurability.call_after_configure_hooks
|
783
|
+
|
784
|
+
expect( hook_was_called ).to be( true )
|
785
|
+
end
|
786
|
+
|
787
|
+
|
708
788
|
end
|
709
789
|
|
710
790
|
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: 3.
|
4
|
+
version: 3.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -11,32 +11,31 @@ bindir: bin
|
|
11
11
|
cert_chain:
|
12
12
|
- |
|
13
13
|
-----BEGIN CERTIFICATE-----
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
+
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
OMKv6pWsoS81vw5KAGBmfX8nht/Py90DQrbRvakATGI=
|
14
|
+
MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
|
15
|
+
REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xODExMjAxODI5NTlaFw0xOTExMjAxODI5
|
16
|
+
NTlaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
|
17
|
+
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
|
18
|
+
L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
|
19
|
+
M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO
|
20
|
+
5PU2AEbf04GGSrmqADGWXeaslaoRdb1fu/0M5qfPTRn5V39sWD9umuDAF9qqil/x
|
21
|
+
Sl6phTvgBrG8GExHbNZpLARd3xrBYLEFsX7RvBn2UPfgsrtvpdXjsHGfpT3IPN+B
|
22
|
+
vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
|
23
|
+
dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
|
24
|
+
ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
|
25
|
+
N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
|
26
|
+
VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DAcBgNVHREE
|
27
|
+
FTATgRFnZWRARmFlcmllTVVELm9yZzAcBgNVHRIEFTATgRFnZWRARmFlcmllTVVE
|
28
|
+
Lm9yZzANBgkqhkiG9w0BAQsFAAOCAYEAP9Ffkvg4e8CjIWi8SykQ8oJSS8jbmbgF
|
29
|
+
abke3vXWLG6V9kFiObuJd5wZRBluJANu7bEtjgc3fFaGVP2XxVdCpVjNbmMDg4Qp
|
30
|
+
ovvczP53X6pQP2RSZgxF6Lblvy8y11RziUTVRG/Z2aJHsElo6gI7vQznE/OSDrhC
|
31
|
+
gEhr8uaIUt7D+HZWRbU0+MkKPpL5uMqaFuJbqXEvSwPTuUuYkDfNfsjQO7ruWBac
|
32
|
+
bxHCrvpZ6Tijc0nrlyXi6gPOCLeaqhau2xFnlvKgELwsGYSoKBJyDwqtQ5kwrOlU
|
33
|
+
tkSyLrfZ+RZcH535Hyvif7ZxB0v5OxXXoec+N2vrUsEUMRDL9dg4/WFdN8hIOixF
|
34
|
+
3IPKpZ1ho0Ya5q7yhygtBK9/NBFHw+nbJjcltfPDBXleRe8u73gnQo8AZIhStYSP
|
35
|
+
v4qqqa27Bs468d6SoPxjSm8a2mM9HZ4OdWhq4tFsbTeXDVquCfi64OTEaTt2xQdR
|
36
|
+
JnC4lpJfCP6aCXa5h2XAQfPSH636cQap
|
38
37
|
-----END CERTIFICATE-----
|
39
|
-
date:
|
38
|
+
date: 2019-09-03 00:00:00.000000000 Z
|
40
39
|
dependencies:
|
41
40
|
- !ruby/object:Gem::Dependency
|
42
41
|
name: loggability
|
@@ -72,14 +71,14 @@ dependencies:
|
|
72
71
|
requirements:
|
73
72
|
- - "~>"
|
74
73
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
74
|
+
version: '0.10'
|
76
75
|
type: :development
|
77
76
|
prerelease: false
|
78
77
|
version_requirements: !ruby/object:Gem::Requirement
|
79
78
|
requirements:
|
80
79
|
- - "~>"
|
81
80
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
81
|
+
version: '0.10'
|
83
82
|
- !ruby/object:Gem::Dependency
|
84
83
|
name: hoe-highline
|
85
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,42 +113,48 @@ dependencies:
|
|
114
113
|
requirements:
|
115
114
|
- - "~>"
|
116
115
|
- !ruby/object:Gem::Version
|
117
|
-
version: '3.
|
116
|
+
version: '3.8'
|
118
117
|
type: :development
|
119
118
|
prerelease: false
|
120
119
|
version_requirements: !ruby/object:Gem::Requirement
|
121
120
|
requirements:
|
122
121
|
- - "~>"
|
123
122
|
- !ruby/object:Gem::Version
|
124
|
-
version: '3.
|
123
|
+
version: '3.8'
|
125
124
|
- !ruby/object:Gem::Dependency
|
126
125
|
name: rdoc
|
127
126
|
requirement: !ruby/object:Gem::Requirement
|
128
127
|
requirements:
|
129
|
-
- - "
|
128
|
+
- - ">="
|
130
129
|
- !ruby/object:Gem::Version
|
131
130
|
version: '4.0'
|
131
|
+
- - "<"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '7'
|
132
134
|
type: :development
|
133
135
|
prerelease: false
|
134
136
|
version_requirements: !ruby/object:Gem::Requirement
|
135
137
|
requirements:
|
136
|
-
- - "
|
138
|
+
- - ">="
|
137
139
|
- !ruby/object:Gem::Version
|
138
140
|
version: '4.0'
|
141
|
+
- - "<"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '7'
|
139
144
|
- !ruby/object:Gem::Dependency
|
140
145
|
name: hoe
|
141
146
|
requirement: !ruby/object:Gem::Requirement
|
142
147
|
requirements:
|
143
148
|
- - "~>"
|
144
149
|
- !ruby/object:Gem::Version
|
145
|
-
version: '3.
|
150
|
+
version: '3.18'
|
146
151
|
type: :development
|
147
152
|
prerelease: false
|
148
153
|
version_requirements: !ruby/object:Gem::Requirement
|
149
154
|
requirements:
|
150
155
|
- - "~>"
|
151
156
|
- !ruby/object:Gem::Version
|
152
|
-
version: '3.
|
157
|
+
version: '3.18'
|
153
158
|
description: |-
|
154
159
|
Configurability is a unified, non-intrusive, assume-nothing configuration system
|
155
160
|
for Ruby. It lets you keep the configuration for multiple objects in a single
|
@@ -159,8 +164,7 @@ description: |-
|
|
159
164
|
email:
|
160
165
|
- ged@FaerieMUD.org
|
161
166
|
- mahlon@martini.nu
|
162
|
-
executables:
|
163
|
-
- configurability
|
167
|
+
executables: []
|
164
168
|
extensions: []
|
165
169
|
extra_rdoc_files:
|
166
170
|
- History.md
|
@@ -173,7 +177,6 @@ files:
|
|
173
177
|
- Manifest.txt
|
174
178
|
- README.md
|
175
179
|
- Rakefile
|
176
|
-
- bin/configurability
|
177
180
|
- examples/basicconfig.rb
|
178
181
|
- examples/config.yml
|
179
182
|
- examples/readme.rb
|
@@ -186,7 +189,7 @@ files:
|
|
186
189
|
- spec/configurability/deferred_config_spec.rb
|
187
190
|
- spec/configurability_spec.rb
|
188
191
|
- spec/helpers.rb
|
189
|
-
homepage:
|
192
|
+
homepage: https://configur.ability.guide/
|
190
193
|
licenses:
|
191
194
|
- BSD-3-Clause
|
192
195
|
metadata: {}
|
@@ -200,15 +203,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
200
203
|
requirements:
|
201
204
|
- - ">="
|
202
205
|
- !ruby/object:Gem::Version
|
203
|
-
version: 2.
|
206
|
+
version: 2.5.0
|
204
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
208
|
requirements:
|
206
209
|
- - ">="
|
207
210
|
- !ruby/object:Gem::Version
|
208
211
|
version: '0'
|
209
212
|
requirements: []
|
210
|
-
|
211
|
-
rubygems_version: 2.7.6
|
213
|
+
rubygems_version: 3.0.3
|
212
214
|
signing_key:
|
213
215
|
specification_version: 4
|
214
216
|
summary: Configurability is a unified, non-intrusive, assume-nothing configuration
|