class Chef::Sugar::Filters::Injector
A top-level class for manipulation the resource collection.
Public Class Methods
new(recipe, identifier, placement)
click to toggle source
# File lib/chef/sugar/filters.rb, line 36 def initialize(recipe, identifier, placement) @recipe = recipe @resource_collection = @recipe.run_context.resource_collection @resource = @resource_collection.lookup(identifier) @placement = placement end
Public Instance Methods
evaluate(&block)
click to toggle source
# File lib/chef/sugar/filters.rb, line 43 def evaluate(&block) instance_eval(&block) end
insert_after(resource, new_resource)
click to toggle source
# File lib/chef/sugar/filters.rb, line 59 def insert_after(resource, new_resource) @resource_collection.instance_eval do # Remove the resource because it's automatically created @resources.delete_at(@resources_by_name[new_resource.to_s]) @resources_by_name.delete(new_resource.to_s) index = @resources_by_name[resource.to_s] + 2 @resources.insert(index, new_resource) @resources_by_name[new_resource.to_s] = index end end
insert_before(resource, new_resource)
click to toggle source
# File lib/chef/sugar/filters.rb, line 47 def insert_before(resource, new_resource) @resource_collection.instance_eval do # Remove the resource because it's automatically created @resources.delete_at(@resources_by_name[new_resource.to_s]) @resources_by_name.delete(new_resource.to_s) index = @resources_by_name[resource.to_s] @resources.insert(index, new_resource) @resources_by_name[new_resource.to_s] = index end end
method_missing(m, *args, &block)
click to toggle source
Calls superclass method
# File lib/chef/sugar/filters.rb, line 71 def method_missing(m, *args, &block) new_resource = @recipe.send(m, *args, &block) case @placement when :before insert_before(@resource, new_resource) when :after insert_after(@resource, new_resource) else super end end