module Capistrano::ReleaseParty

Public Class Methods

extended(configuration) click to toggle source
# File lib/release_party/release_party.rb, line 26
def self.extended(configuration)
  configuration.load do

    before 'deploy', 'release_party:starting'
    after 'deploy',  'release_party:finished'

    namespace :release_party do
      task :starting do

        env = Capistrano::ReleaseParty.instance(Capistrano::ReleaseParty, configuration) do |environment|
          begin
            environment.load_release_file
          rescue ReleaseFile::FileNotFoundError => error
            announce error.message
          end
        end

        announce "Beginning deployment, project details obtained."

        # Record when the release began
        env.release_started = Time.now

        # Load all the celebrations
        env.celebrations = \
          Celebration.celebrations.collect do |celebration_class|
            begin
              celebration_class.new(env).tap(&:before_deploy)

            rescue LoadError => error
              announce "Unable to load #{celebration_class}, message: #{error.message} you may have to install a gem"

            rescue ArgumentError => error
              announce error.message

            end
          end.compact

        self
        
      end

      task :finished do
        env = Capistrano::ReleaseParty.instance

        announce "Performing post deploy celebrations!"

        # Record when the release finished
        env.release_finished = Time.now

        # Do after deploy
        env.celebrations.each(&:after_deploy)

        self
      end
    end
  end
end
instance(party = nil, cap_config = nil) { |env| ... } click to toggle source

Singleton instance of the release party environment

# File lib/release_party/release_party.rb, line 16
def self.instance(party = nil, cap_config = nil, &block)
  return @env unless @env.nil?

  raise ArgumentError, "Release finished without being started" if party.nil? || cap_config.nil?

  @env = Environment.new party, cap_config
  yield(@env) if block_given?
  @env
end