Skip to content

Instantly share code, notes, and snippets.

@lamdor
Forked from darrinholst/monkey_patch.rb
Created March 27, 2012 20:18

Revisions

  1. lamdor revised this gist Mar 27, 2012. 1 changed file with 13 additions and 22 deletions.
    35 changes: 13 additions & 22 deletions monkey_patch.rb
    Original file line number Diff line number Diff line change
    @@ -1,39 +1,30 @@
    require 'chef/resource/deploy'
    require 'chef/provider/deploy/revision'

    class Chef
    class Resource
    class Deploy < Chef::Resource
    def on_start(arg=nil, &block)
    arg ||= block
    set_or_return(:on_start, arg, :kind_of => [Proc, String])
    end
    class Deploy

    def on_complete(arg=nil, &block)
    def before_rollback(arg=nil, &block)
    arg ||= block
    set_or_return(:on_complete, arg, :kind_of => [Proc, String])
    set_or_return(:before_rollback, arg, :kind_of => [Proc, String])
    end

    def on_error(arg=nil, &block)
    arg ||= block
    set_or_return(:on_error, arg, :kind_of => [Proc, String])
    end
    end
    end
    end

    class Chef
    class Provider
    class Deploy < Chef::Provider
    alias :old_deploy :deploy
    class Deploy
    class Revision

    def deploy
    begin
    callback(:on_start, @new_resource.on_start)
    old_deploy
    callback(:on_complete, @new_resource.on_complete)
    rescue => e
    callback(:on_error, @new_resource.on_error)
    raise e
    def action_rollback
    callback(:before_rollback, @new_resource.before_rollback)
    super
    end

    end
    end
    end
    end
    end
  2. @darrinholst darrinholst created this gist Mar 27, 2012.
    39 changes: 39 additions & 0 deletions monkey_patch.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    class Chef
    class Resource
    class Deploy < Chef::Resource
    def on_start(arg=nil, &block)
    arg ||= block
    set_or_return(:on_start, arg, :kind_of => [Proc, String])
    end

    def on_complete(arg=nil, &block)
    arg ||= block
    set_or_return(:on_complete, arg, :kind_of => [Proc, String])
    end

    def on_error(arg=nil, &block)
    arg ||= block
    set_or_return(:on_error, arg, :kind_of => [Proc, String])
    end
    end
    end
    end

    class Chef
    class Provider
    class Deploy < Chef::Provider
    alias :old_deploy :deploy

    def deploy
    begin
    callback(:on_start, @new_resource.on_start)
    old_deploy
    callback(:on_complete, @new_resource.on_complete)
    rescue => e
    callback(:on_error, @new_resource.on_error)
    raise e
    end
    end
    end
    end
    end