class Capistrano::BundleRsync::SCM

Base class for SCM strategy providers.

@abstract

Public Instance Methods

check() click to toggle source

@abstract

Your implementation should check if the specified remote-repository is available.

@return [Boolean]

# File lib/capistrano/bundle_rsync/scm.rb, line 28
def check
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #check method"
  )
end
clean_release() click to toggle source

@abstract

Clean the contents of the cache-repository onto the release path

@return void

# File lib/capistrano/bundle_rsync/scm.rb, line 76
def clean_release
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #clean_release method"
  )
end
clone() click to toggle source

@abstract

Create a (new) clone of the remote-repository on the deployment target

@return void

# File lib/capistrano/bundle_rsync/scm.rb, line 40
def clone
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #clone method"
  )
end
create_release() click to toggle source

@abstract

Copy the contents of the cache-repository onto the release path

@return void

# File lib/capistrano/bundle_rsync/scm.rb, line 64
def create_release
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #create_release method"
  )
end
rsync_release() click to toggle source

@abstract

Rsync the contents of the release path

This is an additional task endpoint provided by capistrano-bundle_rsync

@return void

# File lib/capistrano/bundle_rsync/scm.rb, line 90
def rsync_release
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #rsync_release method"
  )
end
rsync_shared() click to toggle source

@abstract

Rsync arbitrary contents to shared directory

This is an additional task endpoint provided by capistrano-bundle_rsync

@return void

# File lib/capistrano/bundle_rsync/scm.rb, line 103
def rsync_shared
  hosts = ::Capistrano::Configuration.env.filter(release_roles(:all))
  rsync_options = config.rsync_options

  if config_files = config.config_files
    Parallel.each(hosts, in_threads: config.max_parallels(hosts)) do |host|
      ssh = config.build_ssh_command(host)
      config_files.each do |config_file|
        basename = File.basename(config_file)
        execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config_file} #{host}:#{release_path}/config/#{basename}"
      end
    end
  end

  if shared_dirs = config.shared_dirs
    Parallel.each(hosts, in_threads: config.max_parallels(hosts)) do |host|
      ssh = config.build_ssh_command(host)
      shared_dirs.each do |shared_dir|
        basename = File.basename(shared_dir)
        execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{shared_dir}/ #{host}:#{shared_path}/#{basename}/"
      end
    end
  end
end
set_current_revision() click to toggle source

@abstract

Identify the SHA of the commit that will be deployed. This will most likely involve SshKit's capture method.

@return void

# File lib/capistrano/bundle_rsync/scm.rb, line 134
def set_current_revision
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #set_current_revision method"
  )
end
test() click to toggle source

@abstract

Your implementation should check the existence of a cache repository on the deployment target

@return [Boolean]

# File lib/capistrano/bundle_rsync/scm.rb, line 15
def test
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #test method"
  )
end
update() click to toggle source

@abstract

Update the clone on the deployment target

@return void

# File lib/capistrano/bundle_rsync/scm.rb, line 52
def update
  raise NotImplementedError.new(
    "Your SCM strategy module should provide a #update method"
  )
end