Sha256: 753c52e699d2191719eb56ad7f0bf4f84b4f4c8e12630b5d6a841bb93a3ef96c

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

require "#{::File.dirname(__FILE__)}/service.rb"
require "#{::File.dirname(__FILE__)}/../provision/boot_strapper.rb"

module PoolParty
  module Plugin
        
    class Plugin < PoolParty::Service
      include CloudResourcer
      include PoolParty::DependencyResolverCloudExtensions
      include PoolParty::Callbacks
            
      default_options({})
      
      def initialize(opts={}, prnt=nil, &block)
        before_load(opts, &block)
        
        block = Proc.new {enable} unless block

        @opts = opts        
        super(opts, &block)
        
        run_in_context do
          loaded @opts, &block
        end
        
        setup_callbacks
        after_create
      end
      
      # Overwrite this method
      def before_load(o={}, &block)        
      end
      def loaded(o={}, &block)
      end
      # Callbacks available to plugins
      def after_create
      end
      
      def enable
      end
      def is_plugin?
        true
      end
      def bootstrap_gems *gems
        gems.each do |g|
          Provision::BootStrapper.gem_list << g unless Provision::BootStrapper.gem_list.include?(g)
        end
      end
      
      def bootstrap_commands cmds
        Provision::BootStrapper.class_commands << cmds
      end
      
      def configure_commands cmds
        Provision::DrConfigure.class_commands << cmds
      end
      
      def self.inherited(subclass)
        method_name = subclass.to_s.top_level_class.gsub(/pool_party_/, '').gsub(/_class/, '').downcase.to_sym
        add_has_and_does_not_have_methods_for(method_name)
      end
      
    end
    
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
auser-poolparty-1.1.6 lib/poolparty/poolparty/plugin.rb
auser-poolparty-1.1.7 lib/poolparty/poolparty/plugin.rb
fairchild-poolparty-1.1.5 lib/poolparty/poolparty/plugin.rb