class Egads::Release
Public Instance Methods
restart()
click to toggle source
# File lib/egads/command/release.rb, line 26 def restart return unless should_release? inside release_to do # Restart services run_with_code(RemoteConfig.restart_command, stream: true) end end
run_after_release_hooks()
click to toggle source
# File lib/egads/command/release.rb, line 35 def run_after_release_hooks inside release_to do run_hooks_for(:release, :after) end end
run_before_release_hooks()
click to toggle source
# File lib/egads/command/release.rb, line 16 def run_before_release_hooks return unless should_release? inside(dir) { run_hooks_for(:release, :before) } end
setup_environment()
click to toggle source
# File lib/egads/command/release.rb, line 8 def setup_environment RemoteConfig.setup_environment end
stage()
click to toggle source
# File lib/egads/command/release.rb, line 12 def stage invoke(Egads::Stage, [sha], options) end
symlink_release()
click to toggle source
# File lib/egads/command/release.rb, line 21 def symlink_release return unless should_release? atomic_symlink(dir, release_to) end
trim()
click to toggle source
# File lib/egads/command/release.rb, line 41 def trim FileUtils.touch(dir) # Ensure this release isn't trimmed invoke(Egads::Trim, [4], {}) end
Protected Instance Methods
atomic_symlink(src, dest)
click to toggle source
Symlinks src to dest, even if dest is an existing directory symlink NB that `ln -f` doesn't work with directories. Use an extra temporary symlink for atomicity (equivalent to `mv -T`)
# File lib/egads/command/release.rb, line 67 def atomic_symlink(src, dest) raise ArgumentError.new("#{src} is not a directory") unless File.directory?(src) say_status :symlink, "from #{src} to #{dest}" tmp = "#{dest}-new-#{rand(2**32)}" # Make a temporary symlink File.symlink(src, tmp) # Atomically rename the symlink, possibly overwriting an existing symlink File.rename(tmp, dest) end
current_symlink_destination()
click to toggle source
# File lib/egads/command/release.rb, line 55 def current_symlink_destination File.readlink(RemoteConfig.release_to) rescue nil end
dir()
click to toggle source
# File lib/egads/command/release.rb, line 47 def dir RemoteConfig.release_dir(sha) end
release_to()
click to toggle source
# File lib/egads/command/release.rb, line 51 def release_to RemoteConfig.release_to end
should_release?()
click to toggle source
# File lib/egads/command/release.rb, line 59 def should_release? @should_release = options[:force] || dir != current_symlink_destination unless defined?(@should_release) @should_release end