configurability 3.1.2 → 3.2.0.pre20170417124946
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
- data/README.md +7 -2
- data/lib/configurability/setting_installer.rb +34 -5
- data/spec/configurability_spec.rb +21 -0
- metadata +10 -37
- checksums.yaml.gz.sig +0 -1
- data.tar.gz.sig +0 -3
- data/LICENSE +0 -27
- 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: 0e8dd8f36e8946a47bb0995306511f0b294cb017
|
4
|
+
data.tar.gz: 328e482e54d855294152c4cdd6c3a681537970a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d44d26d9266ebdf4356507f42714471015a99c3a889d9b373ed89a8958db681ce35a0e4af16962d74aceb5d803c6b511c4dd473d72ed1b49d203424081d7781
|
7
|
+
data.tar.gz: 6050a8d1125b623b4ffa2f4795c7df05ad846977e01cdee654ff944c4bc9deee16f7488781f1b66b0eef93ccdba997fe9bb72dde84262abe7ed782647a6817ef
|
data/README.md
CHANGED
@@ -75,7 +75,7 @@ some settings:
|
|
75
75
|
setting :user
|
76
76
|
setting :password
|
77
77
|
setting :port do |value|
|
78
|
-
Integer( value )
|
78
|
+
Integer( value ) if value
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -85,7 +85,12 @@ three subkey settings under it (with getters and setters) to the class. It also
|
|
85
85
|
adds a `configure` class method that will set whichever of the settings are
|
86
86
|
passed to it, defaulting the `url` to the provided value if it's not given.
|
87
87
|
|
88
|
-
The `setting` can include a block which is given the config value before it's
|
88
|
+
The `setting` can include a block which is given the config value before it's
|
89
|
+
set; from this block you can do validity-checking, cast it to something other
|
90
|
+
than a String, etc. The new value will be set to the return value of the block.
|
91
|
+
Note that this will be called with the default for the setting when it's
|
92
|
+
declared, so the block should be able to handle the default (even if it's
|
93
|
+
`nil`).
|
89
94
|
|
90
95
|
If your config file (e.g., `config.yml`) looks like this:
|
91
96
|
|
@@ -39,17 +39,46 @@ class Configurability::SettingInstaller
|
|
39
39
|
|
40
40
|
### Add accessors with the specified +name+ to the target.
|
41
41
|
def add_setting_accessors( name, options, &writer_hook )
|
42
|
-
reader =
|
43
|
-
writer =
|
44
|
-
value = writer_hook[ value ] if writer_hook
|
45
|
-
self.instance_variable_set( "@#{name}", value )
|
46
|
-
end
|
42
|
+
reader = self.make_setting_reader( name, options )
|
43
|
+
writer = self.make_setting_writer( name, options, &writer_hook )
|
47
44
|
|
48
45
|
self.target.define_singleton_method( "#{name}", &reader )
|
49
46
|
self.target.define_singleton_method( "#{name}=", &writer )
|
50
47
|
end
|
51
48
|
|
52
49
|
|
50
|
+
### Create the body of the setting reader method with the specified +name+ and +options+.
|
51
|
+
def make_setting_reader( name, options )
|
52
|
+
if options[:use_class_vars]
|
53
|
+
return lambda do
|
54
|
+
Loggability[ Configurability ].debug "Using class variables for %s of %p" %
|
55
|
+
[ name, self ]
|
56
|
+
self.class_variable_get("@@#{name}")
|
57
|
+
end
|
58
|
+
else
|
59
|
+
return lambda { self.instance_variable_get("@#{name}") }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
### Create the body of the setting writer method with the specified +name+ and +options+.
|
65
|
+
def make_setting_writer( name, options, &writer_hook )
|
66
|
+
if options[:use_class_vars]
|
67
|
+
return lambda do |value|
|
68
|
+
Loggability[ Configurability ].debug "Using class variables for %s of %p" %
|
69
|
+
[ name, self ]
|
70
|
+
value = writer_hook[ value ] if writer_hook
|
71
|
+
self.class_variable_set( "@@#{name}", value )
|
72
|
+
end
|
73
|
+
else
|
74
|
+
return lambda do |value|
|
75
|
+
value = writer_hook[ value ] if writer_hook
|
76
|
+
self.instance_variable_set( "@#{name}", value )
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
|
53
82
|
### Add a default for +name+ to the CONFIG_DEFAULTS constant of the target, creating
|
54
83
|
### it if necessary.
|
55
84
|
def add_default( name, options )
|
@@ -684,6 +684,27 @@ describe Configurability do
|
|
684
684
|
end
|
685
685
|
|
686
686
|
|
687
|
+
it "allows the use of class variables instead of class-instance variables for settings on a Class" do
|
688
|
+
superclass = Class.new
|
689
|
+
superclass.extend( Configurability )
|
690
|
+
superclass.configurability( :plugin ) do
|
691
|
+
setting :api_key, default: 'service_api_key', use_class_vars: true
|
692
|
+
setting :environment, default: 'development'
|
693
|
+
end
|
694
|
+
|
695
|
+
subclass = Class.new( superclass )
|
696
|
+
|
697
|
+
expect {
|
698
|
+
superclass.api_key = 'QzCoukGwAWDMjyTkQzWnCXhhgEs'
|
699
|
+
}.to change { subclass.api_key }.
|
700
|
+
from( 'service_api_key' ).
|
701
|
+
to( 'QzCoukGwAWDMjyTkQzWnCXhhgEs' )
|
702
|
+
expect {
|
703
|
+
superclass.environment = 'production'
|
704
|
+
}.to_not change { subclass.environment }.
|
705
|
+
from( nil )
|
706
|
+
end
|
707
|
+
|
687
708
|
end
|
688
709
|
|
689
710
|
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.2.0.pre20170417124946
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -9,34 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
|
-
-
|
13
|
-
|
14
|
-
MIIEbDCCAtSgAwIBAgIBATANBgkqhkiG9w0BAQsFADA+MQwwCgYDVQQDDANnZWQx
|
15
|
-
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
16
|
-
HhcNMTYwODIwMTgxNzQyWhcNMTcwODIwMTgxNzQyWjA+MQwwCgYDVQQDDANnZWQx
|
17
|
-
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
18
|
-
ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC/JWGRHO+USzR97vXjkFgt
|
19
|
-
83qeNf2KHkcvrRTSnR64i6um/ziin0I0oX23H7VYrDJC9A/uoUa5nGRJS5Zw/+wW
|
20
|
-
ENcvWVZS4iUzi4dsYJGY6yEOsXh2CcF46+QevV8iE+UmbkU75V7Dy1JCaUOyizEt
|
21
|
-
TH5UHsOtUU7k9TYARt/TgYZKuaoAMZZd5qyVqhF1vV+7/Qzmp89NGflXf2xYP26a
|
22
|
-
4MAX2qqKX/FKXqmFO+AGsbwYTEds1mksBF3fGsFgsQWxftG8GfZQ9+Cyu2+l1eOw
|
23
|
-
cZ+lPcg834G9DrqW2zhqUoLr1MTly4pqxYGb7XoDhoR7dd1kFE2a067+DzWC/ADt
|
24
|
-
+QkcqWUm5oh1fN0eqr7NsZlVJDulFgdiiYPQiIN7UNsii4Wc9aZqBoGcYfBeQNPZ
|
25
|
-
soo/6za/bWajOKUmDhpqvaiRv9EDpVLzuj53uDoukMMwxCMfgb04+ckQ0t2G7wqc
|
26
|
-
/D+K9JW9DDs3Yjgv9k4h7YMhW5gftosd+NkNC/+Y2CkCAwEAAaN1MHMwCQYDVR0T
|
27
|
-
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFHKN/nkRusdqCJEuq3lgB3fJvyTg
|
28
|
-
MBwGA1UdEQQVMBOBEWdlZEBGYWVyaWVNVUQub3JnMBwGA1UdEgQVMBOBEWdlZEBG
|
29
|
-
YWVyaWVNVUQub3JnMA0GCSqGSIb3DQEBCwUAA4IBgQAPJzKiT0zBU7kpqe0aS2qb
|
30
|
-
FI0PJ4y5I8buU4IZGUD5NEt/N7pZNfOyBxkrZkXhS44Fp+xwBH5ebLbq/WY78Bqd
|
31
|
-
db0z6ZgW4LMYMpWFfbXsRbd9TU2f52L8oMAhxOvF7Of5qJMVWuFQ8FPagk2iHrdH
|
32
|
-
inYLQagqAF6goWTXgAJCdPd6SNeeSNqA6vlY7CV1Jh5kfNJJ6xu/CVij1GzCLu/5
|
33
|
-
DMOr26DBv+qLJRRC/2h34uX71q5QgeOyxvMg+7V3u/Q06DXyQ2VgeeqiwDFFpEH0
|
34
|
-
PFkdPO6ZqbTRcLfNH7mFgCBJjsfSjJrn0sPBlYyOXgCoByfZnZyrIMH/UY+lgQqS
|
35
|
-
6Von1VDsfQm0eJh5zYZD64ZF86phSR7mUX3mXItwH04HrZwkWpvgd871DZVR3i1n
|
36
|
-
w8aNA5re5+Rt/Vvjxj5AcEnZnZiz5x959NaddQocX32Z1unHw44pzRNUur1GInfW
|
37
|
-
p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
|
38
|
-
-----END CERTIFICATE-----
|
39
|
-
date: 2017-01-16 00:00:00.000000000 Z
|
12
|
+
- certs/ged.pem
|
13
|
+
date: 2017-04-17 00:00:00.000000000 Z
|
40
14
|
dependencies:
|
41
15
|
- !ruby/object:Gem::Dependency
|
42
16
|
name: loggability
|
@@ -72,14 +46,14 @@ dependencies:
|
|
72
46
|
requirements:
|
73
47
|
- - "~>"
|
74
48
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
49
|
+
version: '0.9'
|
76
50
|
type: :development
|
77
51
|
prerelease: false
|
78
52
|
version_requirements: !ruby/object:Gem::Requirement
|
79
53
|
requirements:
|
80
54
|
- - "~>"
|
81
55
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
56
|
+
version: '0.9'
|
83
57
|
- !ruby/object:Gem::Dependency
|
84
58
|
name: hoe-highline
|
85
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +116,14 @@ dependencies:
|
|
142
116
|
requirements:
|
143
117
|
- - "~>"
|
144
118
|
- !ruby/object:Gem::Version
|
145
|
-
version: '3.
|
119
|
+
version: '3.16'
|
146
120
|
type: :development
|
147
121
|
prerelease: false
|
148
122
|
version_requirements: !ruby/object:Gem::Requirement
|
149
123
|
requirements:
|
150
124
|
- - "~>"
|
151
125
|
- !ruby/object:Gem::Version
|
152
|
-
version: '3.
|
126
|
+
version: '3.16'
|
153
127
|
description: |-
|
154
128
|
Configurability is a unified, non-intrusive, assume-nothing configuration system
|
155
129
|
for Ruby. It lets you keep the configuration for multiple objects in a single
|
@@ -169,7 +143,6 @@ extra_rdoc_files:
|
|
169
143
|
files:
|
170
144
|
- ChangeLog
|
171
145
|
- History.md
|
172
|
-
- LICENSE
|
173
146
|
- Manifest.txt
|
174
147
|
- README.md
|
175
148
|
- Rakefile
|
@@ -203,12 +176,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
203
176
|
version: 2.2.0
|
204
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
178
|
requirements:
|
206
|
-
- - "
|
179
|
+
- - ">"
|
207
180
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
181
|
+
version: 1.3.1
|
209
182
|
requirements: []
|
210
183
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.6.
|
184
|
+
rubygems_version: 2.6.11
|
212
185
|
signing_key:
|
213
186
|
specification_version: 4
|
214
187
|
summary: Configurability is a unified, non-intrusive, assume-nothing configuration
|
checksums.yaml.gz.sig
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
�g���ڱ?��u�$hDn���4yPB�����~\��m&߷�.ߚ��$�H�H��?h����yd��J��^㪠���K������֘������G��V������
|
data.tar.gz.sig
DELETED
data/LICENSE
DELETED
@@ -1,27 +0,0 @@
|
|
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.
|
metadata.gz.sig
DELETED
Binary file
|