class Photish::Plugin::Sshdeploy::Deploy

Attributes

config[R]
log[R]

Public Class Methods

new(config, log) click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 5
def initialize(config, log)
  @config = config
  @log = log
end

Private Class Methods

engine_name() click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 85
def self.engine_name
  'ssh'
end
is_for?(type) click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 79
def self.is_for?(type)
  [
    Photish::Plugin::Type::Deploy
  ].include?(type)
end

Public Instance Methods

deploy_site() click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 10
def deploy_site
  log.info "Publishing website to #{host}"

  log.info "Cleaning temp locations and ensuring directories exist"
  execute("ssh #{host} -v '" +
          "mkdir -p #{publish_temp_dir} && " +
          "rm -rf #{publish_temp_dir}/* && " +
          "mkdir -p #{upload_temp_dir} && " +
          "rm -rf #{upload_temp_dir}/*" +
          "'")

  log.info "Creating tar gz of photish site"
  execute("GZIP=-9 tar -zcvf " +
          "#{output_dir_compress_file} " +
          "-C #{output_dir_with_base} .")

  log.info "Uploading site to upload temp location"
  execute("rsync -v " +
          "-e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' " +
          "--progress #{output_dir_compress_file} " +
          "#{host}:#{upload_temp_dir}")

  log.info "Extracting site to publish temp location"
  execute("ssh #{host} -v " +
          "'tar -zxvf " +
          "#{upload_temp_dir}/#{output_dir_compress_filename} " +
          "-C #{publish_temp_dir}'")

  log.info "Moving publish temp to publish folder"
  execute("ssh #{host} -v " +
          "'sudo su #{www_user} bash -c \"" +
          "mkdir -p #{publish_dir} && " +
          "rm -rf #{publish_dir}/* && " +
          "cp -rf #{publish_temp_dir}/* #{publish_dir}\"'")
  log.info "#{Time.new}: Deployment complete"
ensure
  FileUtils.rm_rf(output_dir_compress_file)
end

Private Instance Methods

execute(command) click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 89
def execute(command)
  log.info "Executing: #{command}"
  system("#{command}") || exit(1)
end
output_dir_compress_file() click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 74
def output_dir_compress_file
  @output_dir_compress_file ||= File.join(Dir.mktmpdir,
                                          output_dir_compress_filename)
end
output_dir_compress_filename() click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 70
def output_dir_compress_filename
  'output_dir.tar.gz'
end
output_dir_with_base() click to toggle source
# File lib/photish/plugin/sshdeploy/deploy.rb, line 66
def output_dir_with_base
  File.join([output_dir, url.base].flatten)
end