microwave 0.1006.31 → 0.1006.32

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 CHANGED
@@ -1 +1 @@
1
- 0.1006.31
1
+ 0.1006.32
@@ -45,6 +45,7 @@ class Chef
45
45
 
46
46
  def load_cookbooks
47
47
  load_as(:attribute_filenames, 'attributes', '*.rb')
48
+ load_as(:definition_filenames, 'definitions', '*.rb')
48
49
  load_as(:recipe_filenames, 'recipes', '*.rb')
49
50
  load_as(:library_filenames, 'libraries', '*.rb')
50
51
  load_recursively_as(:template_filenames, "templates", "*")
@@ -22,6 +22,7 @@
22
22
  require 'chef/log'
23
23
  require 'chef/client'
24
24
  require 'chef/node'
25
+ require 'chef/resource_definition_list'
25
26
  require 'chef/recipe'
26
27
  require 'chef/cookbook/file_vendor'
27
28
  require 'chef/checksum'
@@ -91,7 +92,7 @@ class Chef
91
92
  class CookbookVersion
92
93
  include Comparable
93
94
 
94
- COOKBOOK_SEGMENTS = [ :resources, :providers, :recipes, :libraries, :attributes, :files, :templates, :root_files ]
95
+ COOKBOOK_SEGMENTS = [ :resources, :providers, :recipes, :definitions, :libraries, :attributes, :files, :templates, :root_files ]
95
96
 
96
97
  attr_accessor :root_dir
97
98
  attr_accessor :definition_filenames
@@ -342,6 +343,8 @@ class Chef
342
343
  @recipe_filenames
343
344
  when :libraries
344
345
  @library_filenames
346
+ when :definitions
347
+ @definition_filenames
345
348
  when :attributes
346
349
  @attribute_filenames
347
350
  when :files
@@ -588,6 +591,7 @@ class Chef
588
591
  def generate_manifest
589
592
  manifest = Mash.new({
590
593
  :recipes => Array.new,
594
+ :definitions => Array.new,
591
595
  :libraries => Array.new,
592
596
  :attributes => Array.new,
593
597
  :files => Array.new,
@@ -34,27 +34,43 @@ class Chef
34
34
  include Chef::Mixin::Language
35
35
 
36
36
  def method_missing(method_symbol, *args, &block)
37
- # Otherwise, we're rocking the regular resource call route.
38
- method_name = method_symbol.to_s
39
- rname = convert_to_class_name(method_name)
37
+ # If we have a definition that matches, we want to use that instead. This should
38
+ # let you do some really crazy over-riding of "native" types, if you really want
39
+ # to.
40
+ if run_context.definitions.has_key?(method_symbol)
41
+ # This dupes the high level object, but we still need to dup the params
42
+ new_def = run_context.definitions[method_symbol].dup
43
+ new_def.params = new_def.params.dup
44
+ new_def.node = run_context.node
45
+ # This sets up the parameter overrides
46
+ new_def.instance_eval(&block) if block
47
+ new_recipe = Chef::Recipe.new(cookbook_name, @recipe_name, run_context)
48
+ new_recipe.params = new_def.params
49
+ new_recipe.params[:name] = args[0]
50
+ new_recipe.instance_eval(&new_def.recipe)
51
+ else
52
+ # Otherwise, we're rocking the regular resource call route.
53
+ method_name = method_symbol.to_s
54
+ rname = convert_to_class_name(method_name)
40
55
 
41
- super unless Chef::Resource.const_defined?(rname)
42
- raise ArgumentError, "You must supply a name when declaring a #{method_name} resource" unless args.size > 0
56
+ super unless Chef::Resource.const_defined?(rname)
57
+ raise ArgumentError, "You must supply a name when declaring a #{method_name} resource" unless args.size > 0
43
58
 
44
- # If we have a resource like this one, we want to steal its state
45
- args << run_context
46
- resource = Chef::Resource.const_get(rname).new(*args)
47
- resource.load_prior_resource
48
- resource.cookbook_name = cookbook_name
49
- resource.recipe_name = @recipe_name
50
- resource.params = @params
51
- resource.source_line = caller[0]
52
- # Determine whether this resource is being created in the context of an enclosing Provider
53
- resource.enclosing_provider = self.is_a?(Chef::Provider) ? self : nil
54
- resource.instance_eval(&block) if block
59
+ # If we have a resource like this one, we want to steal its state
60
+ args << run_context
61
+ resource = Chef::Resource.const_get(rname).new(*args)
62
+ resource.load_prior_resource
63
+ resource.cookbook_name = cookbook_name
64
+ resource.recipe_name = @recipe_name
65
+ resource.params = @params
66
+ resource.source_line = caller[0]
67
+ # Determine whether this resource is being created in the context of an enclosing Provider
68
+ resource.enclosing_provider = self.is_a?(Chef::Provider) ? self : nil
69
+ resource.instance_eval(&block) if block
55
70
 
56
- run_context.resource_collection.insert(resource)
57
- resource
71
+ run_context.resource_collection.insert(resource)
72
+ resource
73
+ end
58
74
  end
59
75
 
60
76
  end
@@ -0,0 +1,67 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/mixin/from_file'
20
+ require 'chef/mixin/params_validate'
21
+
22
+ class Chef
23
+ class ResourceDefinition
24
+
25
+ include Chef::Mixin::FromFile
26
+ include Chef::Mixin::ParamsValidate
27
+
28
+ attr_accessor :name, :params, :recipe, :node
29
+
30
+ def initialize(node=nil)
31
+ @name = nil
32
+ @params = Hash.new
33
+ @recipe = nil
34
+ @node = node
35
+ end
36
+
37
+ def define(resource_name, prototype_params=nil, &block)
38
+ unless resource_name.kind_of?(Symbol)
39
+ raise ArgumentError, "You must use a symbol when defining a new resource!"
40
+ end
41
+ @name = resource_name
42
+ if prototype_params
43
+ unless prototype_params.kind_of?(Hash)
44
+ raise ArgumentError, "You must pass a hash as the prototype parameters for a definition."
45
+ end
46
+ @params = prototype_params
47
+ end
48
+ if Kernel.block_given?
49
+ @recipe = block
50
+ else
51
+ raise ArgumentError, "You must pass a block to a definition."
52
+ end
53
+ true
54
+ end
55
+
56
+ # When we do the resource definition, we're really just setting new values for
57
+ # the paramaters we prototyped at the top. This method missing is as simple as
58
+ # it gets.
59
+ def method_missing(symbol, *args)
60
+ @params[symbol] = args.length == 1 ? args[0] : args
61
+ end
62
+
63
+ def to_s
64
+ "#{name.to_s}"
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,38 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/mixin/from_file'
20
+ require 'chef/resource_definition'
21
+
22
+ class Chef
23
+ class ResourceDefinitionList
24
+ include Chef::Mixin::FromFile
25
+
26
+ attr_accessor :defines
27
+
28
+ def initialize
29
+ @defines = Hash.new
30
+ end
31
+
32
+ def define(resource_name, prototype_params=nil, &block)
33
+ @defines[resource_name] = ResourceDefinition.new
34
+ @defines[resource_name].define(resource_name, prototype_params, &block)
35
+ true
36
+ end
37
+ end
38
+ end
@@ -31,7 +31,7 @@ class Chef
31
31
  # Used to load the node's recipes after expanding its run list
32
32
  include Chef::Mixin::LanguageIncludeRecipe
33
33
 
34
- attr_reader :node, :cookbook_collection
34
+ attr_reader :node, :cookbook_collection, :definitions
35
35
 
36
36
  # Needs to be settable so deploy can run a resource_collection independent
37
37
  # of any cookbooks.
@@ -46,6 +46,7 @@ class Chef
46
46
  @node = node
47
47
  @cookbook_collection = cookbook_collection
48
48
  @resource_collection = Chef::ResourceCollection.new
49
+ @definitions = Hash.new
49
50
 
50
51
  # TODO: 5/18/2010 cw/timh - See note on Chef::Node's
51
52
  # cookbook_collection attr_accessor
@@ -57,6 +58,7 @@ class Chef
57
58
  load_lwrp_providers
58
59
  load_lwrp_resources
59
60
  load_attributes
61
+ load_resource_definitions
60
62
 
61
63
  # Precendence rules state that roles' attributes come after
62
64
  # cookbooks. Now we've loaded attributes from cookbooks with
@@ -99,6 +101,18 @@ class Chef
99
101
  node.load_attributes
100
102
  end
101
103
 
104
+ def load_resource_definitions
105
+ foreach_cookbook_load_segment(:definitions) do |cookbook_name, filename|
106
+ Chef::Log.debug("Loading cookbook #{cookbook_name}'s definitions from #{filename}")
107
+ resourcelist = Chef::ResourceDefinitionList.new
108
+ resourcelist.from_file(filename)
109
+ definitions.merge!(resourcelist.defines) do |key, oldval, newval|
110
+ Chef::Log.info("Overriding duplicate definition #{key}, new definition found in #{filename}")
111
+ newval
112
+ end
113
+ end
114
+ end
115
+
102
116
  def foreach_cookbook_load_segment(segment, &block)
103
117
  cookbook_collection.each do |cookbook_name, cookbook|
104
118
  segment_filenames = cookbook.segment_filenames(segment)
@@ -88,6 +88,7 @@ def create_cookbook(dir)
88
88
  puts "** Creating cookbook #{ENV["COOKBOOK"]}"
89
89
  sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "attributes")}"
90
90
  sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "recipes")}"
91
+ sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "definitions")}"
91
92
  sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "libraries")}"
92
93
  sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "resources")}"
93
94
  sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "providers")}"
metadata CHANGED
@@ -1,203 +1,208 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: microwave
3
- version: !ruby/object:Gem::Version
4
- hash: 3993
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1006
9
- - 31
10
- version: 0.1006.31
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1006.32
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Tom Bombadil
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-09-09 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-09-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: mixlib-config
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 23
30
- segments:
31
- - 1
32
- - 1
33
- - 2
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 1.1.2
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: mixlib-cli
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.1.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: mixlib-cli
32
+ requirement: !ruby/object:Gem::Requirement
41
33
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 19
46
- segments:
47
- - 1
48
- - 1
49
- - 0
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
50
37
  version: 1.1.0
51
38
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: mixlib-log
55
39
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: mixlib-log
48
+ requirement: !ruby/object:Gem::Requirement
57
49
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 27
62
- segments:
63
- - 1
64
- - 3
65
- - 0
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
66
53
  version: 1.3.0
67
54
  type: :runtime
68
- version_requirements: *id003
69
- - !ruby/object:Gem::Dependency
70
- name: json
71
55
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
73
57
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 15
78
- segments:
79
- - 1
80
- - 4
81
- - 4
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: json
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
82
69
  version: 1.4.4
83
70
  - - <=
84
- - !ruby/object:Gem::Version
85
- hash: 11
86
- segments:
87
- - 1
88
- - 5
89
- - 4
71
+ - !ruby/object:Gem::Version
90
72
  version: 1.5.4
91
73
  type: :runtime
92
- version_requirements: *id004
93
- - !ruby/object:Gem::Dependency
94
- name: hike
95
74
  prerelease: false
96
- requirement: &id005 !ruby/object:Gem::Requirement
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: 1.4.4
81
+ - - <=
82
+ - !ruby/object:Gem::Version
83
+ version: 1.5.4
84
+ - !ruby/object:Gem::Dependency
85
+ name: hike
86
+ requirement: !ruby/object:Gem::Requirement
97
87
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- hash: 3
102
- segments:
103
- - 0
104
- version: "0"
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
105
92
  type: :runtime
106
- version_requirements: *id005
107
- - !ruby/object:Gem::Dependency
108
- name: surface
109
93
  prerelease: false
110
- requirement: &id006 !ruby/object:Gem::Requirement
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ - !ruby/object:Gem::Dependency
101
+ name: surface
102
+ requirement: !ruby/object:Gem::Requirement
111
103
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
119
108
  type: :runtime
120
- version_requirements: *id006
121
- - !ruby/object:Gem::Dependency
122
- name: erubis
123
109
  prerelease: false
124
- requirement: &id007 !ruby/object:Gem::Requirement
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ - !ruby/object:Gem::Dependency
117
+ name: erubis
118
+ requirement: !ruby/object:Gem::Requirement
125
119
  none: false
126
- requirements:
127
- - - ">="
128
- - !ruby/object:Gem::Version
129
- hash: 3
130
- segments:
131
- - 0
132
- version: "0"
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
133
124
  type: :runtime
134
- version_requirements: *id007
135
- - !ruby/object:Gem::Dependency
136
- name: moneta
137
125
  prerelease: false
138
- requirement: &id008 !ruby/object:Gem::Requirement
126
+ version_requirements: !ruby/object:Gem::Requirement
139
127
  none: false
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- hash: 3
144
- segments:
145
- - 0
146
- version: "0"
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: moneta
134
+ requirement: !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
147
140
  type: :runtime
148
- version_requirements: *id008
149
- - !ruby/object:Gem::Dependency
150
- name: uuidtools
151
141
  prerelease: false
152
- requirement: &id009 !ruby/object:Gem::Requirement
142
+ version_requirements: !ruby/object:Gem::Requirement
153
143
  none: false
154
- requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
157
- hash: 3
158
- segments:
159
- - 0
160
- version: "0"
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ - !ruby/object:Gem::Dependency
149
+ name: uuidtools
150
+ requirement: !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ! '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
161
156
  type: :runtime
162
- version_requirements: *id009
163
- - !ruby/object:Gem::Dependency
164
- name: sdoc
165
157
  prerelease: false
166
- requirement: &id010 !ruby/object:Gem::Requirement
158
+ version_requirements: !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - ! '>='
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ - !ruby/object:Gem::Dependency
165
+ name: sdoc
166
+ requirement: !ruby/object:Gem::Requirement
167
167
  none: false
168
- requirements:
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- hash: 3
172
- segments:
173
- - 0
174
- version: "0"
168
+ requirements:
169
+ - - ! '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
175
172
  type: :runtime
176
- version_requirements: *id010
177
- - !ruby/object:Gem::Dependency
178
- name: fast_xs
179
173
  prerelease: false
180
- requirement: &id011 !ruby/object:Gem::Requirement
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ - !ruby/object:Gem::Dependency
181
+ name: fast_xs
182
+ requirement: !ruby/object:Gem::Requirement
181
183
  none: false
182
- requirements:
183
- - - ">="
184
- - !ruby/object:Gem::Version
185
- hash: 3
186
- segments:
187
- - 0
188
- version: "0"
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
189
188
  type: :runtime
190
- version_requirements: *id011
191
- description: A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure, forked from Opscode Chef
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ none: false
192
+ requirements:
193
+ - - ! '>='
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ description: A systems integration framework, built to bring the benefits of configuration
197
+ management to your entire infrastructure, forked from Opscode Chef
192
198
  email: amanibhavam@destructuring.org
193
- executables:
199
+ executables:
194
200
  - chef-solo
195
201
  extensions: []
196
-
197
- extra_rdoc_files:
202
+ extra_rdoc_files:
198
203
  - README.rdoc
199
204
  - LICENSE
200
- files:
205
+ files:
201
206
  - LICENSE
202
207
  - README.rdoc
203
208
  - VERSION
@@ -282,6 +287,8 @@ files:
282
287
  - lib/chef/resource.rb
283
288
  - lib/chef/resource_collection/stepable_iterator.rb
284
289
  - lib/chef/resource_collection.rb
290
+ - lib/chef/resource_definition.rb
291
+ - lib/chef/resource_definition_list.rb
285
292
  - lib/chef/resources.rb
286
293
  - lib/chef/role.rb
287
294
  - lib/chef/run_context.rb
@@ -302,39 +309,29 @@ files:
302
309
  - lib/chef/version_constraint.rb
303
310
  - lib/chef.rb
304
311
  - bin/chef-solo
305
- has_rdoc: true
306
312
  homepage: https://github.com/HeSYINUvSBZfxqA/microwave
307
313
  licenses: []
308
-
309
314
  post_install_message:
310
315
  rdoc_options: []
311
-
312
- require_paths:
316
+ require_paths:
313
317
  - lib
314
- required_ruby_version: !ruby/object:Gem::Requirement
318
+ required_ruby_version: !ruby/object:Gem::Requirement
315
319
  none: false
316
- requirements:
317
- - - ">="
318
- - !ruby/object:Gem::Version
319
- hash: 3
320
- segments:
321
- - 0
322
- version: "0"
323
- required_rubygems_version: !ruby/object:Gem::Requirement
320
+ requirements:
321
+ - - ! '>='
322
+ - !ruby/object:Gem::Version
323
+ version: '0'
324
+ required_rubygems_version: !ruby/object:Gem::Requirement
324
325
  none: false
325
- requirements:
326
- - - ">="
327
- - !ruby/object:Gem::Version
328
- hash: 3
329
- segments:
330
- - 0
331
- version: "0"
326
+ requirements:
327
+ - - ! '>='
328
+ - !ruby/object:Gem::Version
329
+ version: '0'
332
330
  requirements: []
333
-
334
331
  rubyforge_project:
335
- rubygems_version: 1.3.7
332
+ rubygems_version: 1.8.24
336
333
  signing_key:
337
334
  specification_version: 3
338
- summary: A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure, forked from Opscode Chef
335
+ summary: A systems integration framework, built to bring the benefits of configuration
336
+ management to your entire infrastructure, forked from Opscode Chef
339
337
  test_files: []
340
-