Parent

Files

Class/Module Index [+]

Quicksearch

Capistrano::Deploy::Strategy::Base

This class defines the abstract interface for all Capistrano deployment strategies. Subclasses must implement at least the deploy! method.

Attributes

configuration[R]

Public Class Methods

new(config={}) click to toggle source

Instantiates a strategy with a reference to the given configuration.

# File lib/capistrano/recipes/deploy/strategy/base.rb, line 15
def initialize(config={})
  @configuration = config
end

Public Instance Methods

check!() click to toggle source

Performs a check on the remote hosts to determine whether everything is setup such that a deploy could succeed.

# File lib/capistrano/recipes/deploy/strategy/base.rb, line 30
def check!
  Dependencies.new(configuration) do |d|
    d.remote.directory(configuration[:releases_path]).or("`#{configuration[:releases_path]}' does not exist. Please run `cap deploy:setup'.")
    d.remote.writable(configuration[:deploy_to]).or("You do not have permissions to write to `#{configuration[:deploy_to]}'.")
    d.remote.writable(configuration[:releases_path]).or("You do not have permissions to write to `#{configuration[:releases_path]}'.")
  end
end
deploy!() click to toggle source

Executes the necessary commands to deploy the revision of the source code identified by the revision variable. Additionally, this should write the value of the revision variable to a file called REVISION, in the base of the deployed revision. This file is used by other tasks, to perform diffs and such.

# File lib/capistrano/recipes/deploy/strategy/base.rb, line 24
def deploy!
  raise NotImplementedError, "`deploy!' is not implemented by #{self.class.name}"
end

Protected Instance Methods

method_missing(sym, *args, &block) click to toggle source

This is to allow helper methods like "run" and "put" to be more easily accessible to strategy implementations.

# File lib/capistrano/recipes/deploy/strategy/base.rb, line 42
def method_missing(sym, *args, &block)
  if configuration.respond_to?(sym)
    configuration.send(sym, *args, &block)
  else
    super
  end
end
system(*args) click to toggle source

A wrapper for Kernel#system that logs the command being executed.

# File lib/capistrano/recipes/deploy/strategy/base.rb, line 51
def system(*args)
  cmd = args.join(' ')
  result = nil
  if RUBY_PLATFORM =~ /win32/
    cmd = cmd.split(/\s+/).collect {|w| w.match(/^[\w+]+:\/\//) ? w : w.gsub('/', '\') }.join(' ') # Split command by spaces, change / by \\ unless element is a some+thing://
    cmd.gsub!(/^cd /,'cd /D ') # Replace cd with cd /D
    cmd.gsub!(/&& cd /,'&& cd /D ') # Replace cd with cd /D
    logger.trace "executing locally: #{cmd}"
    elapsed = Benchmark.realtime do
      result = super(cmd)
    end
  else
    logger.trace "executing locally: #{cmd}"
    elapsed = Benchmark.realtime do
      result = super
    end
  end

  logger.trace "command finished in #{(elapsed * 1000).round}ms"
  result
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.