configurability 3.0.0 → 3.1.0.pre20170103085451

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e5b8b9694625491f3e546adeaccceb6c954d5ec3
4
- data.tar.gz: b9d69f613e03aeb99cec8c0a4d38f7dc5ba85d15
3
+ metadata.gz: d81fc141d010af20dd5d7b78114d0c316f07b240
4
+ data.tar.gz: 6445f4fbbd81ef3b4fe3e8d4bac88cbad4e86602
5
5
  SHA512:
6
- metadata.gz: e2cf44e75c61f75d701d72733a417e837d179b7c948cac985107ba212cf6df689f1fc62b6cb96d2e8c0e41f32a6c3324006970903254f1423a9cd7d1a7dc746e
7
- data.tar.gz: 11fff4eb97457b4bd3ee7c0dfc4a38c95c09b403e5cefd4822692c03ef1ec99239061165eef28ff8aea8b5f3eb523420577a58fcc09e81bc468a1fdb52e67481
6
+ metadata.gz: b387ba4d2f378713a7a497d2db633395dc4dcb5d0a9d35dc9b1da5ed5d0ef45e2b3f9419d234e155f93bc33a222805cd589c438585ac74d19d12213f132ed76f
7
+ data.tar.gz: d3b1fdbed90c63b0e073a372f6ee67ad80f43bd8b97ef1a718c70204b05cbe694fbffece4531a1f014aa4be3e11a085e307dbf2b0548881479dcb12e286ff8e6
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -74,6 +74,9 @@ some settings:
74
74
  setting :url, default: 'sqlite:/'
75
75
  setting :user
76
76
  setting :password
77
+ setting :port do |value|
78
+ Integer( value )
79
+ end
77
80
  end
78
81
  end
79
82
 
@@ -82,6 +85,8 @@ three subkey settings under it (with getters and setters) to the class. It also
82
85
  adds a `configure` class method that will set whichever of the settings are
83
86
  passed to it, defaulting the `url` to the provided value if it's not given.
84
87
 
88
+ The `setting` can include a block which is given the config value before it's set; from this block you can do validity-checking, cast it to something other than a String, etc. The new value will be set to the return value of the block.
89
+
85
90
  If your config file (e.g., `config.yml`) looks like this:
86
91
 
87
92
  --
data/Rakefile CHANGED
@@ -31,7 +31,7 @@ hoespec = Hoe.spec 'configurability' do |spec|
31
31
  spec.developer 'Michael Granger', 'ged@FaerieMUD.org'
32
32
  spec.developer 'Mahlon E. Smith', 'mahlon@martini.nu'
33
33
 
34
- spec.dependency 'loggability', '~> 0.11'
34
+ spec.dependency 'loggability', '~> 0.12'
35
35
 
36
36
  spec.dependency 'hoe-deveiate', '~> 0.8', :developer
37
37
  spec.dependency 'simplecov', '~> 0.12', :developer
@@ -26,9 +26,9 @@ class Configurability::SettingInstaller
26
26
 
27
27
 
28
28
  ### Declare a config setting with the specified +name+.
29
- def setting( name, **options )
29
+ def setting( name, **options, &block )
30
30
  self.log.debug " adding %s setting to %p" % [ name, self.target ]
31
- self.add_setting_accessors( name, options )
31
+ self.add_setting_accessors( name, options, &block )
32
32
  self.add_default( name, options )
33
33
  end
34
34
 
@@ -38,9 +38,12 @@ class Configurability::SettingInstaller
38
38
  #########
39
39
 
40
40
  ### Add accessors with the specified +name+ to the target.
41
- def add_setting_accessors( name, options )
41
+ def add_setting_accessors( name, options, &writer_hook )
42
42
  reader = lambda { self.instance_variable_get("@#{name}") }
43
- writer = lambda {|value| self.instance_variable_set("@#{name}", value) }
43
+ writer = lambda do |value|
44
+ value = writer_hook[ value ] if writer_hook
45
+ self.instance_variable_set( "@#{name}", value )
46
+ end
44
47
 
45
48
  self.target.define_singleton_method( "#{name}", &reader )
46
49
  self.target.define_singleton_method( "#{name}=", &writer )
@@ -630,6 +630,26 @@ describe Configurability do
630
630
  expect( mod.apikey ).to eq( 'jofRtkw&QzCoukGwAWDMjyTkQzWnCXhhgEs' )
631
631
  end
632
632
 
633
+
634
+ it "can declare settings with a block to do writer pre-processing" do
635
+ mod.configurability( :testconfig ) do
636
+ setting :data_dir do |dir|
637
+ Pathname( dir )
638
+ end
639
+ setting :apikey do |key|
640
+ raise "Invalid API key!" unless key.to_s =~ /\A\p{Xdigit}{32}\z/
641
+ key
642
+ end
643
+ end
644
+
645
+ expect {
646
+ mod.data_dir = 'var/data'
647
+ }.to change { mod.data_dir }.to( Pathname('var/data') )
648
+ expect {
649
+ mod.apikey = 'something'
650
+ }.to raise_error( /Invalid API key/i )
651
+ end
652
+
633
653
  end
634
654
 
635
655
  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.0.0
4
+ version: 3.1.0.pre20170103085451
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-28 00:00:00.000000000 Z
39
+ date: 2017-01-03 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: loggability
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.11'
47
+ version: '0.12'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.11'
54
+ version: '0.12'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: hoe-mercurial
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -169,7 +169,6 @@ extra_rdoc_files:
169
169
  files:
170
170
  - ChangeLog
171
171
  - History.md
172
- - LICENSE
173
172
  - Manifest.txt
174
173
  - README.md
175
174
  - Rakefile
@@ -203,9 +202,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
202
  version: 2.2.0
204
203
  required_rubygems_version: !ruby/object:Gem::Requirement
205
204
  requirements:
206
- - - ">="
205
+ - - ">"
207
206
  - !ruby/object:Gem::Version
208
- version: '0'
207
+ version: 1.3.1
209
208
  requirements: []
210
209
  rubyforge_project:
211
210
  rubygems_version: 2.6.8
metadata.gz.sig CHANGED
Binary file
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.