class OfflineDeployer::Updater

Constants

EXTRACT_DIRECTORY

Attributes

zip_file[R]

Public Class Methods

new(zip_file) click to toggle source
# File lib/offline_deployer/updater.rb, line 3
def initialize(zip_file)
  @zip_file = zip_file
end

Public Instance Methods

call() click to toggle source
# File lib/offline_deployer/updater.rb, line 11
def call
  validate_zip_file
  remove_old_update_files
  extract_new_version
  validate_version
  update_changed_files
  remove_deleted_files
  run_update_script
  finish_and_restart_server
end

Private Instance Methods

extract_new_version() click to toggle source
# File lib/offline_deployer/updater.rb, line 32
def extract_new_version
  `echo 'Extracting zip' >> log/update.log`
  Archive::Zip.extract(zip_file.path, EXTRACT_DIRECTORY)
end
finish_and_restart_server() click to toggle source
# File lib/offline_deployer/updater.rb, line 67
def finish_and_restart_server
  `cp #{EXTRACT_DIRECTORY}/.update ./.update`
  `#{OfflineDeployer.settings.restart_server_command}`
  `echo 'Server restarted' >> log/update.log`
end
new_version_info() click to toggle source
# File lib/offline_deployer/updater.rb, line 41
def new_version_info
  YAML.load_file(File.join(EXTRACT_DIRECTORY, '.update'))
end
old_version_info() click to toggle source
# File lib/offline_deployer/updater.rb, line 37
def old_version_info
  YAML.load_file('.update')
end
remove_deleted_files() click to toggle source
# File lib/offline_deployer/updater.rb, line 55
def remove_deleted_files
  deleted_files = new_version_info[:DELETED_FILES]
  return if deleted_files.nil?
  deleted_files.each { |deleted_file| `rm #{deleted_file}` }
end
remove_old_update_files() click to toggle source
# File lib/offline_deployer/updater.rb, line 28
def remove_old_update_files
  FileUtils.remove_dir(EXTRACT_DIRECTORY) if File.exist?(EXTRACT_DIRECTORY)
end
run_update_script() click to toggle source
# File lib/offline_deployer/updater.rb, line 61
def run_update_script
  `./update_script.sh`
  errors = File.open('log/update_error.log').read
  fail 'There were some errors while running the script!' if errors.present?
end
update_changed_files() click to toggle source
# File lib/offline_deployer/updater.rb, line 51
def update_changed_files
  `rsync -r -v #{EXTRACT_DIRECTORY}/* ./ >> log/update.log`
end
validate_version() click to toggle source
# File lib/offline_deployer/updater.rb, line 45
def validate_version
  return if old_version_info[:TO_VERSION] == new_version_info[:FROM_VERSION]
  `echo 'Wrong version' >> log/update.log`
  fail 'Wrong version'
end
validate_zip_file() click to toggle source
# File lib/offline_deployer/updater.rb, line 24
def validate_zip_file
  fail 'Invalid file' if File.extname(zip_file.original_filename) != '.zip'
end