mixlib-config 1.1.0 → 1.1.2.rc01
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.
- data/VERSION.yml +2 -2
- data/lib/mixlib/config.rb +4 -9
- data/spec/mixlib/config_spec.rb +20 -21
- metadata +13 -8
data/VERSION.yml
CHANGED
data/lib/mixlib/config.rb
CHANGED
@@ -18,12 +18,6 @@
|
|
18
18
|
# limitations under the License.
|
19
19
|
#
|
20
20
|
|
21
|
-
class Object # http://whytheluckystiff.net/articles/seeingMetaclassesClearly.html
|
22
|
-
def meta_def name, &blk
|
23
|
-
(class << self; self; end).instance_eval { define_method name, &blk }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
21
|
module Mixlib
|
28
22
|
module Config
|
29
23
|
|
@@ -125,7 +119,7 @@ module Mixlib
|
|
125
119
|
#
|
126
120
|
def internal_set(method_symbol,value)
|
127
121
|
method_name = method_symbol.id2name
|
128
|
-
if
|
122
|
+
if self.respond_to?("#{method_name}=".to_sym)
|
129
123
|
self.send("#{method_name}=", value)
|
130
124
|
else
|
131
125
|
self.configuration[method_symbol] = value
|
@@ -142,8 +136,9 @@ module Mixlib
|
|
142
136
|
# value<Object>:: Value to be set in config hash
|
143
137
|
#
|
144
138
|
def config_attr_writer(method_symbol, &blk)
|
145
|
-
|
146
|
-
|
139
|
+
meta = class << self; self; end
|
140
|
+
method_name = "#{method_symbol.to_s}=".to_sym
|
141
|
+
meta.send :define_method, method_name do |value|
|
147
142
|
self.configuration[method_symbol] = blk.call(value)
|
148
143
|
end
|
149
144
|
end
|
data/spec/mixlib/config_spec.rb
CHANGED
@@ -18,6 +18,11 @@
|
|
18
18
|
|
19
19
|
require File.expand_path(File.join(File.dirname(__FILE__), "..", "spec_helper"))
|
20
20
|
|
21
|
+
class ConfigIt
|
22
|
+
extend ::Mixlib::Config
|
23
|
+
end
|
24
|
+
|
25
|
+
|
21
26
|
describe Mixlib::Config do
|
22
27
|
before(:each) do
|
23
28
|
ConfigIt.configure do |c|
|
@@ -96,47 +101,41 @@ describe Mixlib::Config do
|
|
96
101
|
|
97
102
|
describe "when a class method override accessor exists" do
|
98
103
|
before do
|
99
|
-
|
100
|
-
|
104
|
+
@klass = Class.new
|
105
|
+
@klass.extend(::Mixlib::Config)
|
106
|
+
@klass.class_eval(<<-EVAL)
|
101
107
|
config_attr_writer :test_method do |blah|
|
102
108
|
blah.is_a?(Integer) ? blah * 1000 : blah
|
103
109
|
end
|
104
|
-
|
105
|
-
|
110
|
+
pp self.methods
|
111
|
+
EVAL
|
106
112
|
end
|
107
113
|
|
108
114
|
it "should multiply an integer by 1000" do
|
109
|
-
|
110
|
-
|
115
|
+
@klass[:test_method] = 53
|
116
|
+
@klass[:test_method].should == 53000
|
111
117
|
end
|
112
118
|
|
113
119
|
it "should multiply an integer by 1000 with the method_missing form" do
|
114
|
-
|
115
|
-
|
120
|
+
@klass.test_method = 63
|
121
|
+
@klass.test_method.should == 63000
|
116
122
|
end
|
117
123
|
|
118
124
|
it "should multiply an integer by 1000 with the instance_eval DSL form" do
|
119
|
-
|
120
|
-
|
125
|
+
@klass.instance_eval("test_method 73")
|
126
|
+
@klass.test_method.should == 73000
|
121
127
|
end
|
122
128
|
|
123
129
|
it "should multiply an integer by 1000 via from-file, too" do
|
124
130
|
IO.stub!(:read).with('config.rb').and_return("test_method 99")
|
125
|
-
|
126
|
-
|
131
|
+
@klass.from_file('config.rb')
|
132
|
+
@klass.test_method.should == 99000
|
127
133
|
end
|
128
134
|
|
129
135
|
it "should receive internal_set with the method name and config value" do
|
130
|
-
|
131
|
-
|
136
|
+
@klass.should_receive(:internal_set).with(:test_method, 53).and_return(true)
|
137
|
+
@klass[:test_method] = 53
|
132
138
|
end
|
133
139
|
|
134
|
-
after do
|
135
|
-
class ConfigIt
|
136
|
-
class << self
|
137
|
-
undef test_method=
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
140
|
end
|
142
141
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixlib-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: true
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
|
8
|
+
- 2
|
9
|
+
- rc01
|
10
|
+
version: 1.1.2.rc01
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Opscode, Inc.
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-06-15 00:00:00 -07:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
@@ -54,6 +55,7 @@ rdoc_options:
|
|
54
55
|
require_paths:
|
55
56
|
- lib
|
56
57
|
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
57
59
|
requirements:
|
58
60
|
- - ">="
|
59
61
|
- !ruby/object:Gem::Version
|
@@ -61,16 +63,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
61
63
|
- 0
|
62
64
|
version: "0"
|
63
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
64
67
|
requirements:
|
65
|
-
- - "
|
68
|
+
- - ">"
|
66
69
|
- !ruby/object:Gem::Version
|
67
70
|
segments:
|
68
|
-
-
|
69
|
-
|
71
|
+
- 1
|
72
|
+
- 3
|
73
|
+
- 1
|
74
|
+
version: 1.3.1
|
70
75
|
requirements: []
|
71
76
|
|
72
77
|
rubyforge_project:
|
73
|
-
rubygems_version: 1.3.
|
78
|
+
rubygems_version: 1.3.7
|
74
79
|
signing_key:
|
75
80
|
specification_version: 3
|
76
81
|
summary: A class based config mixin, similar to the one found in Chef.
|