mixlib-config 2.2.3 → 2.2.4

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: ebf0bd30e24aaeef0c7f79e0e4ce25adc6bef352
4
- data.tar.gz: 800fd90f845685bd25aedc76fa6a5fc93bd0b485
3
+ metadata.gz: d8af6841c4facccc997e4f034d65114d5cb37493
4
+ data.tar.gz: 83cce1c086a8ced0d664a0c69fbda32984abbf49
5
5
  SHA512:
6
- metadata.gz: db587efec382225f4f1f8655b7f0d364825c34b3897913b516f8398e0b2b18a94d025e85f0f4ee83d3237f5b5f94c498b80036262f11a9036ff75bae12be2ef6
7
- data.tar.gz: 6d06502f5e374fe48227ac4f82eba7dd330ecdfeba2becfadf5f078c3fa3a25eec7043a736dd23279d656eec13108507d4ece022beba8e002e0d404821022fd2
6
+ metadata.gz: ec9e172a49462573a09580ecd568ce2fa8c3827f48d38c93a5288269481d0b023e111a8acadd801f0682f7081ea56a70f9201747d90dff55f09f2867a648256d
7
+ data.tar.gz: 46eeefec4cd14ba0283461a319955c444e5ab0b0f4213ed4fe85c309ccf3bc48b0687b0fb2d1b462b4914b2e89b0d3c473194dca3f00b675dd28658671726216
data/README.md CHANGED
@@ -59,11 +59,30 @@ Often you want to be able to group configuration options to provide a common con
59
59
  end
60
60
  ```
61
61
 
62
- The user can write their config file like this:
62
+ The user can write their config file in one of three formats:
63
63
 
64
+ #### Method Style
64
65
  ```ruby
65
- logging.base_filename 'superlog'
66
- logging.max_log_files 2
66
+ logging.base_filename 'superlog'
67
+ logging.max_log_files 2
68
+ ```
69
+
70
+ #### Block Style
71
+ Using this format the block is executed in the context, so all configurables on that context is directly accessible
72
+ ```ruby
73
+ logging do
74
+ base_filename 'superlog'
75
+ max_log_files 2
76
+ end
77
+ ```
78
+
79
+ #### Block with Argument Style
80
+ Using this format the context is given to the block as an argument
81
+ ```ruby
82
+ logging do |l|
83
+ l.base_filename = 'superlog'
84
+ l.max_log_files = 2
85
+ end
67
86
  ```
68
87
 
69
88
  You can access these variables thus:
@@ -174,6 +174,7 @@ module Mixlib
174
174
  end
175
175
  result
176
176
  end
177
+ alias :to_hash :save
177
178
 
178
179
  # Restore non-default values from the given hash.
179
180
  #
@@ -416,7 +417,7 @@ module Mixlib
416
417
  if configurables.has_key?(symbol)
417
418
  configurables[symbol].set(self.configuration, value)
418
419
  elsif config_contexts.has_key?(symbol)
419
- config_contexts[symbol].restore(value)
420
+ config_contexts[symbol].restore(value.to_hash)
420
421
  else
421
422
  if config_strict_mode == :warn
422
423
  Chef::Log.warn("Setting unsupported config value #{symbol}.")
@@ -461,8 +462,18 @@ module Mixlib
461
462
  internal_set(symbol, value)
462
463
  end
463
464
  # Getter
464
- meta.send :define_method, symbol do |*args|
465
- internal_get_or_set(symbol, *args)
465
+ meta.send :define_method, symbol do |*args, &block|
466
+ # If a block was given, eval it in the context
467
+ if block
468
+ # If the block expects no arguments, then instance_eval
469
+ if block.arity == 0
470
+ internal_get(symbol).instance_eval(&block)
471
+ else # yield to the block
472
+ block.yield(internal_get(symbol))
473
+ end
474
+ else
475
+ internal_get_or_set(symbol, *args)
476
+ end
466
477
  end
467
478
  end
468
479
  end
@@ -19,7 +19,7 @@
19
19
  module Mixlib
20
20
  module Config
21
21
 
22
- VERSION = "2.2.3"
22
+ VERSION = "2.2.4"
23
23
 
24
24
  end
25
25
  end
@@ -754,6 +754,24 @@ describe Mixlib::Config do
754
754
  expect(@klass.blah.z).to eql(10)
755
755
  end
756
756
 
757
+ it "setting the context values in a block overrides the default values" do
758
+ @klass.blah do
759
+ x 10
760
+ y 20
761
+ end
762
+ @klass.blah.x.should == 10
763
+ @klass.blah.y.should == 20
764
+ end
765
+
766
+ it "setting the context values in a yielded block overrides the default values" do
767
+ @klass.blah do |b|
768
+ b.x = 10
769
+ b.y = 20
770
+ end
771
+ @klass.blah.x.should == 10
772
+ @klass.blah.y.should == 20
773
+ end
774
+
757
775
  it "after reset of the parent class, children are reset" do
758
776
  @klass.blah.x = 10
759
777
  expect(@klass.blah.x).to eql(10)
@@ -850,12 +868,20 @@ describe Mixlib::Config do
850
868
  expect(@klass.blah.yarr.y).to eql(6)
851
869
  end
852
870
 
853
- it "resmoves added properties not included in saved state" do
871
+ it "removes added properties not included in saved state" do
854
872
  @klass.blah.yarr.z = 12
855
873
  @klass.restore( :blah => { :yarr => { :x => 10 } } )
856
874
  expect(@klass.blah.yarr.x).to eql(10)
857
875
  expect(@klass.blah.yarr.z).to eql(nil)
858
876
  end
877
+
878
+ it "can set a config context from another context" do
879
+ @klass.blah.blyme = { :x => 7 }
880
+ blyme = @klass.blah.blyme
881
+ @klass.blah.yarr.x = 12
882
+ @klass.blah.yarr = blyme
883
+ expect(@klass.blah.yarr.x).to eql(7)
884
+ end
859
885
  end
860
886
 
861
887
  describe "When a config_context with no defaulted values exists" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixlib-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-30 00:00:00.000000000 Z
11
+ date: 2016-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake