Sha256: db973ea5c7733ce74108b08719f59e2d31897dc8bc02f00d3dc299d1e08c2a82

Contents?: true

Size: 1.24 KB

Versions: 7

Compression:

Stored size: 1.24 KB

Contents

module PoolParty
  module Callbacks
    module ClassMethods
      def additional_callbacks(arr=[])
        @additional_callbacks ||= arr
      end
    end
    
    module InstanceMethods
      def defined_callbacks
        [
          :before_bootstrap,
          :after_bootstrap,
          :before_configure,
          :after_configure,
          :after_create,
          # TODO: Add after_launch_instance and after_terminate_instance
          # :after_launch_instance,
          # :after_terminate_instance,
          self.class.additional_callbacks
        ].flatten
      end
      
      # Callbacks on bootstrap and configuration
      def setup_callbacks
        defined_callbacks.each do |meth|
          unless respond_to?("call_#{meth}_callbacks".to_sym)
            self.class.module_eval <<-EOE
              def call_#{meth}_callbacks(*args)
                plugin_store.each {|a| a.call_#{meth}_callbacks(*args) } if respond_to?(:plugin_store) && plugin_store
                self.send :#{meth}, *args if respond_to?(:#{meth})
              end
            EOE
          end
        end
      end
    end
    
    def self.included(receiver)
      receiver.extend         ClassMethods
      receiver.send :include, InstanceMethods      
    end
  end
end

Version data entries

7 entries across 7 versions & 3 rubygems

Version Path
auser-poolparty-1.1.6 lib/poolparty/modules/callbacks.rb
auser-poolparty-1.1.7 lib/poolparty/modules/callbacks.rb
auser-poolparty-1.2.0 lib/poolparty/modules/callbacks.rb
auser-poolparty-1.2.1 lib/poolparty/modules/callbacks.rb
auser-poolparty-1.2.2 lib/poolparty/modules/callbacks.rb
fairchild-poolparty-1.1.5 lib/poolparty/modules/callbacks.rb
poolparty-1.2.2 lib/poolparty/modules/callbacks.rb