Class: Statistrano::Deployment::Strategy::Base

Inherits:
Object
  • Object
show all
Extended by:
Config::Configurable, Registerable
Includes:
CheckGit, InvokeTasks
Defined in:
lib/statistrano/deployment/strategy/base.rb

Overview

A Base Deployment Instance it holds the common methods needed to create a deployment

Direct Known Subclasses

Branches, Releases

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Registerable

register_strategy

Methods included from Config::Configurable

configuration, extended, inherited, option, options, task

Methods included from CheckGit

#safe_to_deploy?

Methods included from InvokeTasks

#call_or_invoke_task, #invoke_build_task, #invoke_post_deploy_task, #invoke_pre_symlink_task

Constructor Details

#initialize(name) ⇒ Void

create a new deployment instance

Parameters:

  • name (String)


39
40
41
# File 'lib/statistrano/deployment/strategy/base.rb', line 39

def initialize name
  @name = name
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



14
15
16
# File 'lib/statistrano/deployment/strategy/base.rb', line 14

def name
  @name
end

Instance Method Details

#deployVoid

Standard deployment flow

Returns:

  • (Void)


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/statistrano/deployment/strategy/base.rb', line 45

def deploy
  unless safe_to_deploy?
    Log.error "exiting due to git check failing"
    abort()
  end

  build_data = invoke_build_task
  build_data = ensure_data_is_hash build_data

  unless safe_to_deploy?
    Log.error "exiting due to git check failing",
              "your build task modified checked in files"
    abort()
  end

  remotes.each do |remote|
    persisted_releaser.create_release remote, build_data
  end

  post_deploy_data = invoke_post_deploy_task
  post_deploy_data = ensure_data_is_hash post_deploy_data

  if config.log_file_path
    log_entry = config.log_file_entry.call self, persisted_releaser,
                                           build_data, post_deploy_data

    remotes.each do |remote|
      log_file(remote).append! log_entry
    end
  end

  flush_persisted_releaser!
end

#flush_persisted_releaser!Object



102
103
104
# File 'lib/statistrano/deployment/strategy/base.rb', line 102

def flush_persisted_releaser!
  @_persisted_releaser = nil
end

#log_file(remote = remotes.first) ⇒ Object



94
95
96
# File 'lib/statistrano/deployment/strategy/base.rb', line 94

def log_file remote=remotes.first
  Deployment::LogFile.new config.log_file_path, remote
end

#persisted_releaserObject



98
99
100
# File 'lib/statistrano/deployment/strategy/base.rb', line 98

def persisted_releaser
  @_persisted_releaser ||= releaser
end

#register_tasksObject



79
80
81
# File 'lib/statistrano/deployment/strategy/base.rb', line 79

def register_tasks
  RakeTasks.register self
end

#remotesObject



83
84
85
86
87
88
89
90
91
92
# File 'lib/statistrano/deployment/strategy/base.rb', line 83

def remotes
  return @_remotes if @_remotes

  @_remotes = config.options[:remotes].map do |remote_options|
    Remote.new Config.new( config.options.dup.merge(remote_options) )
  end
  @_remotes.push Remote.new(config) if @_remotes.empty?

  return @_remotes
end