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